1. 程式人生 > >【EasyNetQ 教程】- 使用SSL連接

【EasyNetQ 教程】- 使用SSL連接

設置 操作 指南 log 調用 tco 獲取 錯誤 light

EasyNetQ可以通過SSL連接。戈登·庫爾特(Gordon Coulter)撰寫的這本指南最初是針對一個提出的問題而寫的。

首先,您必須仔細按照https://www.rabbitmq.com/ssl.html上的步驟操作我花了很多時間試圖讓openssl部分工作,然後花更多的時間讓它按照我需要的方式工作而不僅僅是罐裝演示。

即使你讓EasyNetQ使用SSL,他們在該頁面上顯示的那些DotNet示例代碼可用於測試也是一個很大的幫助。我有一個簡單的控制臺應用程序,其中包含Rabbit和下面的EasyNetQ代碼。還可以使用Rabbit日誌。它們有時比某些錯誤時客戶端發出的更具體。

當您連接時,管理屏幕會在連接屏幕上的協議標簽下顯示一個小SSL。您還應該在Overview選項卡上的偵聽端口表中看到端口443(假設您綁定的內容)。

技術分享圖片

使這項工作的示例代碼如下:

var connection = new ConnectionConfiguration();

connection.Port = 443;
connection.UserName = "user";
connection.Password = "pass";
connection.Product = "SSLTest";

var host1 = new HostConfiguration();
host1.Host 
= "rmq1.contoso.com"; host1.Port = 443; host1.Ssl.Enabled = true; host1.Ssl.ServerName = "rmq1.contoso.com"; host1.Ssl.CertPath = "c:\\tmp\\myclient.p12"; host1.Ssl.CertPassphrase = "secret"; var host2 = new HostConfiguration(); host2.Host = "rmq2.contoso.com"; host2.Port = 443; host2.Ssl.Enabled
= true; host2.Ssl.ServerName = "rmq2.contoso.com"; host2.Ssl.CertPath = "c:\\tmp\\myclient.p12"; host2.Ssl.CertPassphrase = "secret"; connection.Hosts = new List<HostConfiguration> { host1, host2 }; connection.Validate(); //VERY IMPORTANT - DOES CONFIG AS WELL AS VALIDATION! var Bus = RabbitHutch.CreateBus(connection, services => services.Register<IEasyNetQLogger>(logger => new DoNothingLogger()));
 

即使ConnectionConfiguration上存在SslOption屬性,設置SslOption屬性的適當位置也在HostConfiguration對象上。在HostConfiguration對象上設置SSL選項可啟用對群集方案的支持。請註意,在上面的示例中,我們指定了兩個HostConfiguration對象。如果一個不可用,EasyNetQ的PersistentConnection功能將自動連接到下一個可用主機。在主機上配置SSL設置將允許它連接而沒有任何錯誤。

如果只指定一個主機,則可以選擇直接在HostConfiguration對象或ConnectionConfiguration對象上設置SslOptions。

不要忘記調用Validate()。我最初跳過了(基於我對所有內容進行了硬編碼,因此可能沒有任何錯誤需要驗證)。但是,該方法調用實際上應用了使連接工作所需的各種設置。

您可以在此處參考SslOption類獲取 SslOption文檔

您可以嘗試使用官方RabbitMQ .NET客戶端進行配置和測試,並嘗試首先運行示例,以闡明所有設置都是正確的,如此處所述的官方RabbitMQ SSL文檔,然後才能對項目進行任何更改。

【EasyNetQ 教程】- 使用SSL連接