6、Connecting with SSL 在EasyNetQ上使用SSL连接

EasyNetQ可以通过SSL连接。

首先,你必须仔细依据https://www.rabbitmq.com/ssl.html文章中的步骤。我花费了很多时间尝试让openssl这部分能运作起来,然后为了让他按我的需要去运作而不仅仅只是一个demo,我又花费了很多时间。

第一次通过SSL让EasyNetQ运行时,在他们为了测试而做的可以运行的页面上的那点DotNet代码给我提供了很大帮助。我有一个简单的控制台程序,包涵了Rabbit和EasyNetQ代码,会在下面展示。此外使用了Rabbit logs。

当你连接上后,管理界面的connection页面会显示一个小的SSL协议标签。你也会在Overview 选项卡的端口监听表里看到443端口。(假设这是你所绑定的)

代码如下:

 1 var connection = new ConnectionConfiguration();
 2 
 3 connection.Port = 443;
 4 connection.UserName = "user";
 5 connection.Password = "pass";
 6 connection.Product = "SSLTest";
 7 
 8 var host1 = new HostConfiguration();
 9 host1.Host = "rmq1.contoso.com";
10 host1.Port = 443;
11 host1.Ssl.Enabled = true;
12 host1.Ssl.ServerName = "rmq1.contoso.com";
13 host1.Ssl.CertPath = "c:\\tmp\\myclient.p12";
14 host1.Ssl.CertPassphrase = "secret";
15 
16 var host2 = new HostConfiguration();
17 host2.Host = "rmq2.contoso.com";
18 host2.Port = 443;
19 host2.Ssl.Enabled = true;
20 host2.Ssl.ServerName = "rmq2.contoso.com";
21 host2.Ssl.CertPath = "c:\\tmp\\myclient.p12";
22 host2.Ssl.CertPassphrase = "secret";
23 
24 connection.Hosts = new List<HostConfiguration> { host1, host2 };
25 
26 connection.Validate();        //VERY IMPORTANT - DOES CONFIG AS WELL AS VALIDATION!
27 
28 var Bus = RabbitHutch.CreateBus(connection, services => services.Register<IEasyNetQLogger>(logger => new DoNothingLogger()));

 

尽管在ConnectionConfiguration上有一个Ssl选项属性,但在HostConfiguration对象上设置Ssl选项属性更合适。HostConfiguration对象上设置SSL选项可以支持集群的场景。注意,在上面代码中我们指定了两个HostConfiguration对象。假如一个挂了,EasyNetQ的持续连接功能将自动连接到下一个可用的主机。在这个主机上配置SSL在连接时就不会出现任何错误。

假如你仅仅指定一个主机,你可以选择通过HostConfiguration对象去设置SSL选项,也可以直接用ConnectionConfiguration对象去设置。(此时两种都一样了)

不要忘记调用Validate()方法。我最初没调用(我写的都是硬编码,没有什么错误需要验证),但是我错了。该方法实际上应用了连接所需的各种设置。

SslOption详情参见文档SslOption Class

你可以尝试用官方的RabbitMQ .NET client去配置和测试,尝试去运行示例。首先要阐明,在你的项目做任何修改前,所有这些设置都被正确的描述在Official RabbitMQ SSL documentation for .NET.

原文地址:https://github.com/EasyNetQ/EasyNetQ/wiki/Connecting-with-SSL

posted on 2017-12-04 15:51  困兽斗  阅读(107)  评论(0编辑  收藏  举报

导航