ssl - 兔子MQ+TLS : ssl_upgrade_error

标签 ssl rabbitmq rabbitmqctl

按照指示说明 here ,我已经设置了证书颁发机构并使用适当的字段创建了 rabbitmq.config。但是,当我尝试使用

连接到 RabbitMQ 服务器时
openssl s_client -connect 127.0.0.1:5671 -tls1

我在标准输出中得到以下内容:

CONNECTED(00000003)
write:errno=104
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 0 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1
    Cipher    : 0000
    Session-ID: 
    Session-ID-ctx: 
    Master-Key: 
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1449612785
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
---

我在日志中看到以下错误:

=ERROR REPORT==== 8-Dec-2015::16:13:10 ===
Error on AMQP connection <0.257.0>:
{ssl_upgrade_error,
    {options,
        {cacertfile,"/home/nthompson/learn_celery/testca/cacert.pem",
            {error,eacces}}}}

可能是什么问题?

我尝试了以下方法,但没有成功:

  • 打开cacert.pem的权限,即我跑了chmod 444 cacert.pem还有一些更无望的权限,没有骰子。

  • 已验证所有中间目录的权限均为 775。

  • 已验证 RabbitMQ 服务器确实在监听端口 5671,它是:

    $ sudo rabbitmq status
    {listeners,[{clustering,25672,"::"},{amqp,5672,"::"},{'amqp/ssl',5671,"::"}]},
    
  • 检查了 rabbitmq.config 中的所有路径,并通过设置 {verify,verify_none}{fail_if_no_peer_cert,false 放宽了证书交换策略.

  • 启用 rabbitmq_auth_mechanism_ssl 插件的使用

    $ sudo rabbitmq-plugins enable rabbitmq_auth_mechanism_ssl
    

    并验证它被 rabbitmq-server 拾取。此外,我将 {auth_mechanisms, ['PLAIN', 'AMQPLAIN', 'EXTERNAL']} 添加到 rabbitmq.config

  • RabbitMQ 版本是 3.5.4(默认 apt-get),但我也升级到 3.5.6(最新),看看这个问题是否会消失。

最佳答案

经过一番折腾和搜索,我终于找到了!

就我而言,问题是由认证文件的所有权和权限引起的。

我编辑了我的 /etc/rabbitmq/rabbitmq.config以便证书、 key 和 CAfile 指向 /etc/rabbitmq/conf/<file>.pem , 复制原文.pem /etc/rabbitmq/conf/ 中的文件然后我chown -R rabbitmq:rabbitmq /etc/rabbitmq/conf并重新启动服务 service rabbitmq-server restart它奏效了。

关于ssl - 兔子MQ+TLS : ssl_upgrade_error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34167265/

相关文章:

Java Netty : memory leak problem with DefaultChannelHandlerContext

ssl - 如何为 Go 服务器应用程序设置 Let's Encrypt

ssl - Swift 2 中的公钥固定

spring-boot - 更新rabbitmq中消息的有效负载

c# - 消费者运行时应用程序崩溃并退出调试器 & rabbit mq 服务重启

ssl - 需要帮助使用 asadmin 配置 GlassFish

Docker、rabbitMQ 和 pike 连接被拒绝

RabbitMQ错误: unable to connect to nodes : nodedown

RabbitMq:永久添加用户?

python - 为什么 celery.control.inspect 报告的排队任务比 rabbitmqctl 少?