MQTT – 使用 Let’s Encrypt SSL + EMQ X 建構 SSL WebSocket

原理

  • 網站的證書和 MQTT (WebSocket) 的證書必須一致
  • Let’s Encrypt 證書檔案必須讓 emqx 帳號有讀取權限

編輯emqx.conf

  • 請自行替換 {web url} 為你的網域
  • .ssl. 是 MQTT使用;.wss. 是 WebSocket 使用

Let’s Encrypt 證書檔案權限

要讓 emqx 可以讀取 Let’s Encrypt 產生的證書,最大的問題就是目錄和檔案的讀取權限。

預設的權限大多是只有 root 使用者可以讀,最方便的方式是將 /etc/letsencrypt 的 archive & live 的其他人讀取開放

可以使用一般使用者讀取證書檔案測試,如果沒問題就可以重啟 emqx 服務

HTML

在使用上和沒有 SSL 差別不到,注意 mqtt.connect() 的通訊協定是 wss:// 以及 port 的設定即可。

網路上可能會找到有關 MQTT.js 證書相關的設定,不過那些設定並沒有什麼卵用,因為當網站是 https:// 時瀏覽器就會檢查如果是同網站就需要使用相同證書,不同網站就可以發生跨網站的相關錯誤,當然現在也是不能和 http 混用

在 F12 console 下如果沒有看到錯誤恭喜已經成功了。

101 total views, 1 views today