RabbitMQ 服务器可以使用 Let's 加密证书吗?

问题描述 投票:0回答:2

我目前有一个名为“rabbitmq..com”的域名。我不想添加 SSL 证书来进行 AMQPS 连接。

我为rabbitmq仪表板获取了由certbot(让我们加密)生成的nginx证书,并将它们放入rabbitmq配置中:

#listeners.tcp = none

listeners.ssl.default = 5671

ssl_options.cacertfile = /etc/rabbitmq/certs/fullchain.pem
ssl_options.certfile   = /etc/rabbitmq/certs/cert.pem
ssl_options.keyfile    = /etc/rabbitmq/certs/privkey.pem
ssl_options.verify     = verify_peer
ssl_options.fail_if_no_peer_cert = true

重新启动rabbitmq后,我可以在客户端计算机上诊断我与openssl的连接:

openssl s_client -connect rabbitmq.<server>.com:5671 -cert cert.pem -key privkey.pem -CAfile fullchain.pem -verify 8 -verify_hostname rabbitmq.<server>.com

但是 openssl 引发错误:

00864C1001000000:error:0A000418:SSL routines:ssl3_read_bytes:tlsv1 alert unknown ca:ssl/record/rec_layer_s3.c:1588:SSL alert number 48

我尝试将

verify_peer
更改为
verify_none
并且 SSL 客户端可以工作:

...
SSL handshake has read 4579 bytes and written 405 bytes
Verification error: unable to get issuer certificate
---
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
Server public key is 2048 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 2 (unable to get issuer certificate)
---
...
AMQP    closed

但我不喜欢取消安全措施。我的 python pika 客户端无法工作。

我的第一个问题是我的工作做得好吗?我需要获取服务器证书(ca、cert、key)还是需要为客户端重新生成另一个证书?

ssl openssl rabbitmq ssl-certificate lets-encrypt
2个回答
1
投票

SSL 警报编号 48 表示“unknown_ca”。服务器无法验证您发送的客户端证书,因为它找不到服务器信任的 CA 的任何路径。您可能缺少证书签名者的根 CA?


0
投票

ssl_options.fail_if_no_peer_cert 应设置为 false,除非您的服务器必须验证连接来自何处。在这种情况下,它必须知道客户端证书提供者...... 如果您确保客户端无法在没有密码的情况下登录,那么这并不是一个巨大的安全问题。连接将受到保护。

使用letsencrypt,配置如下:

management.ssl.cacertfile           = /etc/letsencrypt/live/example.com/chain.pem
management.ssl.certfile             = /etc/letsencrypt/live/example.com/cert.pem
management.ssl.keyfile              = /etc/letsencrypt/live/example.com/privkey.pem

谨防续订后的权限修改。

© www.soinside.com 2019 - 2024. All rights reserved.