【问题标题】:RabbitMQ Web-MQTT WSS closes client connection. Insecure WS and other secure protocols workRabbitMQ Web-MQTT WSS​​ 关闭客户端连接。不安全的 WS 和其他安全协议工作
【发布时间】:2020-07-30 01:27:56
【问题描述】:

我有一个 RabbitMQ 部署,它使用自己的证书进行端到端加密。它同时使用 AMQP 和 MQTT-over-WSS 来连接多种类型的客户端。 AMQP 客户端能够安全地连接,所以我知道证书设置是好的。

使用 WS 去ws://hostname:15675/ws 的客户端可以正常连接,但显然不安全。尝试连接到wss://hostname:15676/ws 的客户端已关闭连接。 15676 是您将看到的端口,我已将web-mqtt ssl 侦听器绑定到,如下所示。我已经阅读了 RabbitMQ 的 networkingtls 帮助指南,我看到端口正确绑定并且可以确认它已公开并且可供客户端使用。

相关rabbit.conf

listeners.tcp.default = 5671
listeners.ssl.default = 5671

ssl_options.cacertfile = /path/to/fullchain.pem
ssl_options.certfile = /path/to/cert.pem
ssl_options.keyfile = /path/to/privkey.pem

ssl_options.verify = verify_none
ssl_options.fail_if_no_peer_cert = false

web_mqtt.ssl.port = 15676
web_mqtt.ssl.backlog = 1024
web_mqtt.ssl.cacertfile = /path/to/fullchain.pem
web_mqtt.ssl.certfile = /path/to/cert.pem
web_mqtt.ssl.keyfile = /path/to/privkey.pem

基本上,我想知道我的连接字符串是否错误(wss://hostname:15675/ws)?我需要去/wss吗?我的客户端是在localhost 上运行的浏览器,而不是 HTTPS,这是一个问题吗?我是否设置了错误的配置——我错过了一个吗? 如果在 RabbitMQ 网站之外有更好的该插件的文档/示例来源,我也会感兴趣。

【问题讨论】:

    标签: ssl websocket rabbitmq mqtt wss


    【解决方案1】:

    可能是配置不匹配 如果私人文件有任何密码,您还需要添加它。 请参考以下示例 rabbitmq.conf

    listeners.ssl.default = 5671
    ssl_options.cacertfile = <path/ca-bundle (.pem/.cabundle)>
    ssl_options.certfile   = <path/cert (.pem/.crt)>
    ssl_options.keyfile    = <path/key (.pem/.key)>
    ssl_options.password   = <your private key password>
    ssl_options.versions.1 = tlsv1.3
    
    ssl_options.verify               = verify_peer
    ssl_options.fail_if_no_peer_cert = true
    
    ssl_options.ciphers.1  = TLS_AES_256_GCM_SHA384
    ssl_options.ciphers.2  = TLS_AES_128_GCM_SHA256
    ssl_options.ciphers.3  = TLS_CHACHA20_POLY1305_SHA256
    ssl_options.ciphers.4  = TLS_AES_128_CCM_SHA256
    ssl_options.ciphers.5  = TLS_AES_128_CCM_8_SHA256
    
    ssl_options.honor_cipher_order   = true
    ssl_options.honor_ecc_order      = true
    
    web_mqtt.ssl.port       = 15676
    web_mqtt.ssl.backlog    = 1024
    web_mqtt.ssl.cacertfile = <path/ca-bundle (.pem/.cabundle)>
    web_mqtt.ssl.certfile   = <path/crt (.pem/.crt)>
    web_mqtt.ssl.keyfile    = <path/key (.pem/.key)>
    web_mqtt.ssl.password   = <your private key password>
    
    web_mqtt.ssl.honor_cipher_order   = true
    web_mqtt.ssl.honor_ecc_order      = true
    web_mqtt.ssl.client_renegotiation = false
    web_mqtt.ssl.secure_renegotiate   = true
    
    web_mqtt.ssl.versions.1 = tlsv1.2
    web_mqtt.ssl.versions.2 = tlsv1.1
    web_mqtt.ssl.ciphers.1 = ECDHE-ECDSA-AES256-GCM-SHA384
    web_mqtt.ssl.ciphers.2 = ECDHE-RSA-AES256-GCM-SHA384
    web_mqtt.ssl.ciphers.3 = ECDHE-ECDSA-AES256-SHA384
    web_mqtt.ssl.ciphers.4 = ECDHE-RSA-AES256-SHA384
    web_mqtt.ssl.ciphers.5 = ECDH-ECDSA-AES256-GCM-SHA384
    web_mqtt.ssl.ciphers.6 = ECDH-RSA-AES256-GCM-SHA384
    web_mqtt.ssl.ciphers.7 = ECDH-ECDSA-AES256-SHA384
    web_mqtt.ssl.ciphers.8 = ECDH-RSA-AES256-SHA384
    web_mqtt.ssl.ciphers.9 = DHE-RSA-AES256-GCM-SHA384
    

    这是 ubuntu 20.04 上的 rabbitmq-server 的工作配置文件

    1. 重启rabbitmq-server
    2. 列出侦听器端口(确保启用 SSL 端口)(rabbitmq-diagnostics listeners)
    3. 测试 SSL (testssl localhost:16567)
    4. 同时测试 telnet (telnet localhost 16567)

    请参考:https://www.rabbitmq.com/ssl.html#erlang-otp-requirementstroubleshooting

    这对我有用:-)

    【讨论】:

      猜你喜欢
      • 2020-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-14
      • 2014-10-27
      • 2012-02-28
      • 2015-06-05
      相关资源
      最近更新 更多