EasyNetQ可以通过SSL进行连接。这篇指南的作者Gordon Coulter最初为回应一个提问写的。

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

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

当你连接上后,管理界面的connection页面会显示一个小的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上有一个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

3-在EasyNetQ上使用SSL连接(黄亮翻译)的更多相关文章

  1. 【EasyNetQ】- 使用SSL连接

    EasyNetQ可以通过SSL连接.戈登·库尔特(Gordon Coulter)撰写的这本指南最初是针对一个提出的问题而写的. 首先,您必须仔细按照https://www.rabbitmq.com/s ...

  2. 2-用EasyNetQ连接RabbitMQ(黄亮翻译)

    如果你连接过关系数据库,例如SQL Server.你会发现EasyNetQ处理connections有点奇怪.和关系数据库通讯一直都是通过client开始的.Client 打开一个连接, 发出一个SQ ...

  3. 转载 1-EasyNetQ介绍(黄亮翻译) https://www.cnblogs.com/HuangLiang/p/7105659.html

    EasyNetQ 是一个容易使用,坚固的,针对RabbitMQ的 .NET API. 假如你尽可能快的想去安装和运行RabbitMQ,请去看入门指南.EasyNetQ是为了提供一个尽可能简洁的适用与R ...

  4. 4-EasyNetQ之Logging(黄亮翻译)

    EasyNetQ提供了一个Logger接口 IEasyNetQLogger: public interface IEasyNetQLogger { void DebugWrite(string for ...

  5. 1-EasyNetQ介绍(黄亮翻译)

    EasyNetQ 是一个容易使用,坚固的,针对RabbitMQ的 .NET API. 假如你尽可能快的想去安装和运行RabbitMQ,请去看入门指南. EasyNetQ是为了提供一个尽可能简洁的适用与 ...

  6. 5-EasyNetQ之Publish(黄亮翻译)

    EasyNetQ支持的最简单的消息模式是发布/订阅.这个模式是一个极好的方法用来解耦消息提供者和消费者.消息发布者只要简单的对世界说,"这里有些事发生" 或者 "我现在有 ...

  7. EasyNetQ使用(二)【连接RabbitMQ,SSL连接,Logging】

    如果你连接过关系数据库,例如SQL Server.你会发现EasyNetQ处理connections有点奇怪.和关系数据库通讯一直都是通过client开始的.Client 打开一个连接, 发出一个SQ ...

  8. 使用sslsplit嗅探tls/ssl连接

    首先发一个从youtube弄到的sslsplit的使用教程 http://v.qq.com/page/x/k/s/x019634j4ks.html 我最近演示了如何使用mitmproxty执行中间人攻 ...

  9. 使用 JSSE 定制 SSL 连接的属性--转载

    当数据在网络上传播的时候,通过使用 SSL 对其进行加密和保护,JSSE 为 Java 应用程序提供了安全的通信.在本篇有关该技术的高级研究中,Java 中间件开发人员 Ian Parkinson 深 ...

随机推荐

  1. UML用例建模解析(一)----------用例概述

    UML(统一建模语言): 1. 绘制用例图 用例图是UML中比较简单的一种图形,它包含两个主要组成元素,分别是执行者(Actor)和用例(Use Case).执行者又称为参与者或角色,用例又称为用况或 ...

  2. poj2112 最大流+floyd+二分

    题意:给一堆点,一部分是牛,一部分是机器,每头牛必须要走到一个机器,每个点之间有距离,要求每头牛都能找得到一台机器(机器有最大容量)的情况下,走的最远的牛距离最小 题解:二分答案,小于该距离的边才能加 ...

  3. HANA 与BW

    本来备件折让有个挺麻烦的.我当时一度以为不能用BW做,其实自己也想用hana做,发现坤哥说的 的很有道理.BW都没有学懂,都是迷迷糊糊的.再去做hana 弄的四不像.先沉下心来,在bw里把这个项目做好 ...

  4. SVN中如何为文件夹中的所有文件加锁

    经过一段时间的试用,发现不加锁的共享式开发还是不太方便.还是全部设置为独占式加锁,如有共享式修改需求再设置为不加锁比较好. 经过一番摸索,总结出如下的加锁方式是可行的: 注:第一步是必须的,必须完成第 ...

  5. 20165210 Java第二周学习总结

    20165210 Java第二周学习总结 教材学习内容总结 - 第二章学习总结 标识符与关键字: 重点在50个关键字 标识符并不能是关键字 标识符的第一个字符不能是数字字符 Unicode字符集简单了 ...

  6. 在VS2013上配置OpenCV1.0

    OpenCV1.0版(下载)基本上已经是老掉牙了,但是不想装新版,只是因为任性.所以就有了这样一个新老搭配.装完回想起来还是挺简单的,但是还是费了我一晚上,所以有必要记录一下.         先在电 ...

  7. 3.20 内存及效率的一些总结 3.21 设置竖屏 3.22 CCLOG与CCLog区别

    3.20 内存及效率的一些总结 3.21 设置竖屏 1.android AndroidManifest.xml文件中, screenOrientation="landscape" ...

  8. 寻找数组中第K大数

    1.寻找数组中的第二大数 using System; using System.Collections.Generic; using System.Linq; using System.Text; u ...

  9. hadoop-hbase学习笔记

    create "t",{NAME=>"t_id"},{NAME=>"t_vl"} describe "t" ...

  10. Inception-Resnet-V2

    零.Inception-Resnet-V2的网络模型 整体结构如下,整体设计简洁直观: 其中的stem部分网络结构如下,inception设计,并且conv也使用了7*1+1*7这种优化形式: inc ...