EMQX單向認證指的是客戶端與服務端之間建立安全連接時,服務端只驗證客戶端是否信任服務器的證書,而不需要驗證客戶端的身份。本文介紹如何在EMQX服務器配置阿里云自簽名X.509格式證書,實現EMQX的TLS/SSL單向認證。
本文以Windows 10 64位操作系統、emqx-4.4.19-otp24.3.4.6-windows-amd64和mqttfx-1.7.1-windows-x64(模擬物聯網設備)為例介紹。不同的操作系統、服務器或客戶端設備,部署操作可能有所差異,如有問題,請聯系產品技術專家進行咨詢,詳情請參見專家一對一服務。
前提條件
已通過阿里云私有CA服務申請服務端證書。具體操作,請參見申請私有證書。
本文是以阿里云PCA自簽服務端證書為例介紹,如果您需要使用CA中心頒發的阿里云服務端證書,您需要購買并申請SSL證書,具體操作,請參見購買SSL證書。
步驟一:準備EMQX服務端證書
本文是以阿里云PCA自簽證書為例介紹,如果您需要配置CA中心頒發的阿里云服務端證書,請參見下載SSL證書到本地。
登錄數字證書管理服務控制臺。
在左側導航欄,選擇。
準備證書鏈文件cacert.pem。
在私有CA頁簽,定位到目標子CA,在操作列,單擊詳情。
在詳情面板,復制子CA證書內容,然后在本地新建一個TXT文件,將該內容粘貼進去,并將文件命名為cacert.pem。
準備證書文件cert.pem和證書私鑰文件key.pem。
在私有CA頁簽,定位到目標子CA,在操作列,單擊證書列表。
在證書列表頁面,定位到目標服務端證書,在操作列,單擊下載。
在證書下載對話框,選擇證書格式為PEM,單擊確認并下載。
解壓證書壓縮包,將證書文件(PEM格式)命名為cert.pem。在Shell終端執行
openssl rsa -in <domain.key> -out key.pem
,將證書私鑰文件解密,并保存為key.pem。說明domain.key需替換為實際的證書私鑰文件。
步驟二:替換EMQX服務端默認證書
打開EMQX證書配置目錄(默認為\emqx\etc\certs),將步驟一準備的服務端證書文件(cert.pem、cacert.pem、key.pem)替換certs目錄原有的文件。
在本地操作系統,右鍵單擊圖標,并單擊Windows PowerShell (管理員)(A)。
進入\emqx\bin目錄,執行以下命令,啟動EMQX。
./emqx start
步驟三:配置MQTT客戶端證書
打開MQTT客戶端,單擊圖標。
按照下圖指引,配置Broker Address(證書綁定的域名)和CA certificate file(服務端證書鏈文件cacert.pem),單擊Apply,單擊OK。
步驟四:測試單向認證
測試前,您需要在本地操作系統C:\Windows\System32\drivers\etc目錄下的hosts文件添加域名映射,即本地IP與證書綁定域名映射,格式為127.0.0.1 <domain_name>
。
在MQTT客戶端,單擊Connect。
在Subscribe頁簽,輸入EMQX默認的主題testtopic/#,單擊Subscribe,并等待接收服務端消息。
在本地操作系統的瀏覽器中輸入localhost:18083,進入EMQX管理界面。
在左側導航欄,選擇工具 > Webcocket。
在連接區域,單擊連接。
在消息區域。輸入消息,單擊發送。
在MQTT客戶端,如果接收到消息,表示證書安裝成功。