0

我有一个在 EC2 上运行的 emqx mqtt 代理,ssl 和 wss 配置如下所示 -

listener.ssl.external = 8883
listener.ssl.external.keyfile = /etc/emqx/certs/key.pem
listener.ssl.external.certfile = /etc/emqx/certs/cert.pem
listener.ssl.external.cacertfile = /etc/emqx/certs/cacert.pem

listener.ws.external = 8083

listener.wss.external = 8084
listener.wss.external.keyfile = /etc/emqx/certs/key.pem
listener.wss.external.certfile = /etc/emqx/certs/cert.pem
listener.wss.external.cacertfile = /etc/emqx/certs/cacert.pem
listener.wss.external.verify = verify_none
listener.wss.external.fail_if_no_peer_cert = false

当我尝试使用没有 ssl(ws://IP:8083/mqtt) 的 emqx 仪表板(托管在 http)连接到代理时,它工作正常但是当我使用 emqx 仪表板(托管在 https)和 ssl(wss:// IP:8084/mqtt),它没有连接。如何通过 wss 上的 https 连接代理?

编辑:我想要一种方式的身份验证。我将从 React Web 应用程序和 NodeJS 应用程序连接到代理。所以,我不想从客户端提供证书。我使用的证书是 EMQX 安装提供的证书。另外,我使用的是 EMQx 为 https ssl 提供的客户端证书。如果浏览器在没有任何警告的情况下打开 https,它也应该能够连接到 websocket。

4

2 回答 2

1

Websocket 连接无法提供与您访问网页时获得的有关不受信任证书的相同警告。

这意味着无法告诉浏览器信任连接。如果您想使用自签名证书,则需要将它们导入浏览器信任库,以便明确信任它们。

另一种选择是使用 LetsEncrypt 之类的东西来获取浏览器已经信任的真实证书。

于 2020-03-08T20:19:53.813 回答
0

要么证书需要由 Ca 颁发,以便浏览器可以自动验证它。请注意,证书与域相同。

或者证书需要在浏览器中(自签名证书)。

或者您信任验证错误。

用浏览器打开:

https://localhost:8084/mqtt

将弹出信任错误。在此错误页面上,单击信任,然后:

wss://localhost:8084/mqtt

没关系。

于 2020-04-15T02:44:56.563 回答