带有 Let'sEncrypt 证书的 HAproxy 产生 SSL 握手失败

带有 Let'sEncrypt 证书的 HAproxy 产生 SSL 握手失败

我正在使用 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

我建议如下:

相关内容