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 下如果沒有看到錯誤恭喜已經成功了。

103 total views, 3 views today

Let’s Encrypt – *.hoyo.idv.tw 通配網域證書

參考

取得 certbot-auto 及執行

執行,記得產生一個通配網域一個只有網域名稱證書,如此單獨使用網域名稱時才不會 SSL_ERROR_BAD_CERT_DOMAIN 證書問題

編輯 DNS

重新啟動 DNS

驗證

Enter 繼續執行,沒問題出現以下畫面就代表證書建立完成

Online dig

自動更新證書

-目前手動更新中-

Bind 9 動態 DNS

 

其他注意事項

  • 失敗的指令也會算在 Rate Limits
  • SSL_ERROR_BAD_CERT_DOMAIN : hoyo.idv.tw 等於 *.hoyo.idv.tw ,必須使用 hoyo.idv.tw 證書或是將 hoyo.idv.tw 轉到 www.hoyo.idv.tw 才能套用通配網域證書

414 total views, no views today