按照此处所述的指示,我已经建立了一个证书颁发机构并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(最新),看看这是否会消失。