簡體   English   中英

無法從 https 客戶端通過 wss 連接到 emqx mqtt 代理

[英]Not able to connect to emqx mqtt broker over wss from https client

我有一個在 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。

Websocket 連接無法顯示與訪問網頁時獲得的不可信證書相同的警告。

這意味着無法告訴瀏覽器信任連接。 如果要使用自簽名證書,則需要將它們導入瀏覽器信任庫,以便明確信任它們。

另一種選擇是使用 LetsEncrypt 之類的東西來獲取瀏覽器已經信任的真實證書。

要么證書需要由 Ca 頒發,以便瀏覽器可以自動驗證它。 請注意,證書與域相同。

或者證書需要在瀏覽器中(自簽名證書)。

或者您信任驗證錯誤。

用瀏覽器打開:

https://localhost:8084/mqtt

會彈出信任錯誤。 在此錯誤頁面上,單擊信任,然后:

wss://localhost:8084/mqtt

沒關系。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM