我一直在尝试为我的rabbitMQ应用程序建立一个ssl支持,我已经按照rabbitmq文档link在我的.net应用程序中包含ssl支持,我已经能够成功创建证书了ssl身份验证并为rabbit创建了一个配置文件,并将其放在rabbitMQ文件夹内的appdata文件夹中,配置文件的代码:
[
{rabbit, [
{ssl_listeners, [5671]},
{ssl_options, [{cacertfile,"C:\testca\cacert.cer"},
{certfile,"C:\server\cert.pem"},
{keyfile,"C:\server\key.pem"},
{verify,verify_peer},
{fail_if_no_peer_cert,false}]}
]}
]
我已经为发布商修改了我的c#code of rabbitMQ:
ConnectionFactory factory = new ConnectionFactory();
factory.Ssl.ServerName = System.Net.Dns.GetHostName();
factory.Ssl.CertPath = "C:\\server\\keycert.p12";
factory.Ssl.CertPassphrase = "password";
factory.Ssl.Enabled = true;
但是收到错误:BrokerUnreachableException未被添加。
任何提示或帮助?我失踪的任何一分钟让我知道吗?
我正在使用RabbitMQ:2.51。 Erlang:R14B01 操作系统:Windows和.net客户端。
堆栈跟踪:
Exception Message: None of the specified endpoints were reachable
Source: RabbitMQ.Client
Stacktrace: at RabbitMQ.Client.ConnectionFactory.CreateConnection(Int32 maxRedirects)
at RabbitMQ.Client.ConnectionFactory.CreateConnection()
at RabbitProducer.Program.Main(String[] args) in C:\Users\pc 1\Documents\Visual Studio 2008\Projects\RabbitProducer\RabbitProducer\Program.cs:line 36
经纪人日志:
=INFO REPORT==== 9-Aug-2011::11:39:05 ===
Limiting to approx 924 file handles (829 sockets)
=INFO REPORT==== 9-Aug-2011::11:39:05 ===
Memory limit set to 804MB.
=INFO REPORT==== 9-Aug-2011::11:39:05 ===
msg_store_transient: using rabbit_msg_store_ets_index to provide index
=INFO REPORT==== 9-Aug-2011::11:39:05 ===
msg_store_persistent: using rabbit_msg_store_ets_index to provide index
=INFO REPORT==== 9-Aug-2011::11:39:05 ===
started TCP Listener on [::]:5672
=INFO REPORT==== 9-Aug-2011::11:39:05 ===
started TCP Listener on 0.0.0.0:5672
答案 0 :(得分:3)
BrokerUnreachableException
。出现这种情况的原因有很多:代理程序未运行,Windows防火墙阻塞端口5671,证书未在连接的任何一侧正确安装。
调试:
= INFO REPORT ==== 8-Aug-2011 :: 11:51:47 ===
启动SSL侦听器
在0.0.0.0:5671
如果该条目不在日志文件中,请尝试通过rabbitmq-server.bat
中的Program Files\RabbitMQ Server\rabbitmq-server-x.x.x\sbin\
脚本运行rabbitmq,并检查横幅下的“config file:...”条目是否设置为您的配置文件。 (none)
表示代理无法找到该文件。
一旦您知道正在阅读配置文件,请确保您具有RabbitMQ SSL Guide中详细说明的正确设置。
= INFO REPORT ==== 8-Aug-2011 :: 11:54:54 ===
接受来自127.0.0.1:52110的0.0.0.0:5671上的TCP连接= INFO REPORT ==== 8-Aug-2011 :: 11:54:54 ===
启动TCP连接< 0.477.0>从127.0.0.1:52110...
=错误报告==== 2011年8月8日:: 11:54:55 ===
TCP连接错误< 0.477.0&gt ;: {ssl_upgrade_error,“意外消息”}= INFO REPORT ==== 8-Aug-2011 :: 11:54:55 ===
关闭TCP连接< 0.477.0>
如果这不在日志中,那么这就是防火墙问题。
这是Windows XP吗?如果是这样,祝你好运,我们在运行SSL时遇到了问题。在许多情况下,Microsoft的错误.NET实现将阻止您从文件加载证书。
如果是其他内容,请发布完整 .NET堆栈跟踪,相关代理日志条目(“正在启动TCP连接”和“关闭TCP连接”之间的所有内容)和配置文件。
如果没有其他工作,请尝试RabbitMQ Discuss邮件列表。开发人员回答所有问题。