我正在使用 HAproxy 终止 TLS(稍后还会负载平衡)RabbitMQ (MQTT)。当我禁用 TLS 时,一切都运行良好。但是,当我启用 TLS 时,我得到fe_mqtt/1: SSL handshake failure
我使用的证书是由 let's encrypt 颁发的。我使用的 PEM 文件是privkey.pem
和的连接fullchain.pem
我究竟做错了什么?
这是我的 HA 代理配置
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
stats timeout 30s
user haproxy
group haproxy
daemon
# generated 2020-05-20, Mozilla Guideline v5.4, HAProxy 2.0.3, OpenSSL 1.1.1d, modern configuration, no HSTS
# https://ssl-config.mozilla.org/#server=haproxy&version=2.0.3&config=modern&openssl=1.1.1d&hsts=false&guideline=5.4
ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
ssl-default-bind-options no-sslv3 no-tlsv10 no-tlsv11 no-tlsv12 no-tls-tickets
ssl-default-server-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
ssl-default-server-options no-sslv3 no-tlsv10 no-tlsv11 no-tlsv12 no-tls-tickets
defaults
log global
mode tcp
option tcplog
option dontlognull
timeout connect 10s
timeout client 12m
timeout server 10m
frontend fe_mqtt
mode tcp
bind *:8889 ssl crt /etc/letsencrypt/live/staging-mqtt.example.com/haproxy-combined.pem
default_backend be_mqtt
backend be_mqtt
server mqtt-broker 127.0.0.1:1883 send-proxy
答案1
看起来 Rabbit mq 在默认设置中至少需要 TLSv1。您的配置仅允许 TLSv1.3
no-sslv3 no-tlsv10 no-tlsv11 no-tlsv12 no-tls-tickets
我建议如下:
- 在每一行中添加注释
ssl-default-
rabbitmq-diagnostics --silent tls_versions
检查 Rabbit mq中有哪些 TLS/SSL 选项可用对启用 TLS 的连接进行故障排除