【问题标题】:SSL Support for Rabbit + .Net + Windows对 Rabbit + .Net + Windows 的 SSL 支持
【发布时间】:2011-08-08 07:14:10
【问题描述】:

我一直在尝试为我的 rabbitMQ 应用程序建立 ssl 支持,我已按照 rabbitmq 文档link 在我的 rabbit .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}]}
 ]}
 ]

我已经像这样为发布者修改了我的 rabbitMQ 的 c# 代码:

        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。 二郎: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

【问题讨论】:

    标签: .net windows ssl rabbitmq


    【解决方案1】:

    BrokerUnreachableException 在客户端无法连接到代理时发生。出现这种情况的原因有很多:代理未运行、Windows 防火墙阻止端口 5671、证书未正确安装在连接的任一端。

    调试:

    • 代理是否在监听 5671?检查日志文件中提到 ssl 侦听器的条目。它应该如下所示:

    =信息报告==== 2011 年 8 月 8 日::11:51:47 ===
    在 0.0.0.0:5671 上启动 SSL 侦听器

    如果该条目不在日志文件中,请尝试通过Program Files\RabbitMQ Server\rabbitmq-server-x.x.x\sbin\ 中的rabbitmq-server.bat 脚本运行rabbitmq,并检查横幅下的“配置文件:...”条目是否设置为您的 配置文件。 (none) 表示代理无法找到该文件。

    一旦您知道正在读取配置文件,请确保您具有正确的设置,如 RabbitMQ SSL Guide 中所述。

    • 客户端是否正在连接? (暂时忽略 ssl)以下是 SSL 连接失败的样子:

    =信息报告==== 2011 年 8 月 8 日::11:54:54 ===
    接受来自 127.0.0.1:52110 的 0.0.0.0:5671 上的 TCP 连接

    =信息报告==== 2011 年 8 月 8 日::11:54:54 ===
    从 127.0.0.1:52110 开始 TCP 连接

    ...

    =错误报告==== 2011 年 8 月 8 日::11:54:55 ===
    TCP 连接错误 :{ssl_upgrade_error,"unexpected message"}

    =信息报告==== 2011 年 8 月 8 日::11:54:55 ===
    关闭 TCP 连接

    如果日志中没有,则说明是防火墙问题。

    • 这是 Windows XP 吗?如果是这样,祝你好运,我们在其上运行 SSL 时遇到问题。在许多情况下,Microsoft 有缺陷的 .NET 实现会阻止您从文件中加载证书。

    • 如果是其他问题,请同时发布 完整 .NET 堆栈跟踪、相关代理日志条目(“启动 TCP 连接”和“关闭 TCP 连接”之间的所有内容)和配置文件。

    • 如果没有其他方法,请尝试RabbitMQ Discuss 邮件列表。开发人员会认真回答所有提出的问题。

    【讨论】:

    • 感谢您的回复,我在日志文件中得到了完整信息,但仍然无法正常工作。我正在使用 Windows 7,+1 以获取详细回复。一旦它工作,我会将您的回复标记为答案。谢谢
    • 我将我的问题发布到rabbitmq讨论他指出配置文件中的一些错误仍然没有解决还检查了日志文件找不到与ssl相关的任何错误,正在修改我发布的堆栈跟踪问题和经纪人现在登录问题..
    • 供参考,还是我。让我们在那里完成讨论,一旦我们找出问题所在,我将编辑答案。
    • 现在可以工作了...感谢 RabbitMQ 团队的 Alex alias scvalex 的持续检查和回复。只是得到受信任的证书错误。我已将我的问题修改为其他人的参考
    猜你喜欢
    • 1970-01-01
    • 2019-05-12
    • 2021-01-23
    • 1970-01-01
    • 1970-01-01
    • 2022-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多