真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何在EMQX中為MQTT啟用雙向SSL/TLS安全連接

本篇內(nèi)容主要講解“如何在EMQ X中為MQTT啟用雙向SSL/TLS安全連接”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“如何在EMQ X中為MQTT啟用雙向SSL/TLS安全連接”吧!

創(chuàng)新互聯(lián)專注于新北網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供新北營銷型網(wǎng)站建設(shè),新北網(wǎng)站制作、新北網(wǎng)頁設(shè)計、新北網(wǎng)站官網(wǎng)定制、微信小程序定制開發(fā)服務(wù),打造新北網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供新北網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

作為基于現(xiàn)代密碼學(xué)公鑰算法的安全協(xié)議,TLS/SSL 能在計算機通訊網(wǎng)絡(luò)上保證傳輸安全,EMQ X 內(nèi)置對 TLS/SSL 的支持,包括支持單/雙向認證、X.509 證書、負載均衡 SSL 等多種安全認證。你可以為 EMQ X 支持的所有協(xié)議啟用 SSL/TLS,也可以將 EMQ X 提供的 HTTP API 配置為使用 TLS。

SSL/TLS 帶來的安全優(yōu)勢

  • 強認證。用 TLS 建立連接的時候,通訊雙方可以互相檢查對方的身份。在實踐中,很常見的一種身份檢查方式是檢查對方持有的 X.509 數(shù)字證書。這樣的數(shù)字證書通常是由一個受信機構(gòu)頒發(fā)的,不可偽造。

  • 保證機密性。TLS 通訊的每次會話都會由會話密鑰加密,會話密鑰由通訊雙方協(xié)商產(chǎn)生。任何第三方都無法知曉通訊內(nèi)容。即使一次會話的密鑰泄露,并不影響其他會話的安全性。

  • 完整性。加密通訊中的數(shù)據(jù)很難被篡改而不被發(fā)現(xiàn)。

SSL/TLS 協(xié)議

TLS/SSL 協(xié)議下的通訊過程分為兩部分,第一部分是握手協(xié)議。握手協(xié)議的目的是鑒別對方身份并建立一個安全的通訊通道。握手完成之后雙方會協(xié)商出接下來使用的密碼套件和會話密鑰;第二部分是 record 協(xié)議,record 和其他數(shù)據(jù)傳輸協(xié)議非常類似,會攜帶內(nèi)容類型,版本,長度和荷載等信息,不同的是它所攜帶的信息是加密了的。

下面的圖片描述了 TLS/SSL 握手協(xié)議的過程,從客戶端的 "hello" 一直到

如何在EMQ X中為MQTT啟用雙向SSL/TLS安全連接

為什么需要 SSL/TLS 雙向認證

雙向認證是指,在進行通信認證時要求服務(wù)端和客戶端都需要證書,雙方都要進行身份認證,以確保通信中涉及的雙方都是受信任的。 雙方彼此共享其公共證書,然后基于該證書執(zhí)行驗證、確認。一些對安全性要求較高的應(yīng)用場景,就需要開啟雙向 SSL/TLS 認證。

SSL/TLS 證書準備

在雙向認證中,一般都使用自簽名證書的方式來生成服務(wù)端和客戶端證書,因此本文就以自簽名證書為例。

通常來說,我們需要數(shù)字證書來保證 TLS 通訊的強認證。數(shù)字證書的使用本身是一個三方協(xié)議,除了通訊雙方,還有一個頒發(fā)證書的受信第三方,有時候這個受信第三方就是一個 CA。和 CA 的通訊,一般是以預(yù)先發(fā)行證書的方式進行的。也就是在開始 TLS 通訊的時候,我們需要至少有 2 個證書,一個 CA 的,一個 EMQ X 的,EMQ X 的證書由 CA 頒發(fā),并用 CA 的證書驗證。

在這里,我們假設(shè)您的系統(tǒng)已經(jīng)安裝了 OpenSSL。使用 OpenSSL 附帶的工具集就可以生成我們需要的證書了。

生成自簽名 CA 證書

首先,我們需要一個自簽名的 CA 證書。生成這個證書需要有一個私鑰為它簽名,可以執(zhí)行以下命令來生成私鑰:

openssl genrsa -out my_root_ca.key 2048

這個命令將生成一個密鑰長度為 2048 的密鑰并保存在 my_root_ca.key 中。有了這個密鑰,就可以用它來生成 EMQ X 的根證書了:

openssl req -x509 -new -nodes -key my_root_ca.key -sha256 -days 3650 -out my_root_ca.pem

根證書是整個信任鏈的起點,如果一個證書的每一級簽發(fā)者向上一直到根證書都是可信的,那個我們就可以認為這個證書也是可信的。有了這個根證書,我們就可以用它來給其他實體簽發(fā)實體證書了。

生成服務(wù)端證書

實體(在這里指的是 EMQ X)也需要一個自己的私鑰對來保證它對自己證書的控制權(quán)。生成這個密鑰的過程和上面類似:

openssl genrsa -out emqx.key 2048

新建 openssl.cnf 文件,

[req]
default_bits  = 2048
distinguished_name = req_distinguished_name
req_extensions = req_ext
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
countryName = CN
stateOrProvinceName = Zhejiang
localityName = Hangzhou
organizationName = EMQX
commonName = CA
[req_ext]
subjectAltName = @alt_names
[v3_req]
subjectAltName = @alt_names
[alt_names]
IP.1 = BROKER_ADDRESS
DNS.1 = BROKER_ADDRESS

然后以這個密鑰和配置簽發(fā)一個證書請求:

openssl req -new -key ./emqx.key -config openssl.cnf -out emqx.csr

然后以根證書來簽發(fā) EMQ X 的實體證書:

openssl x509 -req -in ./emqx.csr -CA my_root_ca.pem -CAkey my_root_ca.key -CAcreateserial -out emqx.pem -days 3650 -sha256 -extensions v3_req -extfile openssl.cnf

生成客戶端證書

雙向連接認證還需要創(chuàng)建客戶端證書,首先需要創(chuàng)建客戶端密鑰:

openssl genrsa -out client.key 2048

使用生成的客戶端密鑰來創(chuàng)建一個客戶端請求文件:

openssl req -new -key client.key -out client.csr -subj "/C=CN/ST=Zhejiang/L=Hangzhou/O=EMQX/CN=client"

最后使用先前生成好的服務(wù)端 CA 證書來給客戶端簽名,生成一個客戶端證書:

openssl x509 -req -days 3650 -in client.csr -CA my_root_ca.pem -CAkey my_root_ca.key -CAcreateserial -out client.pem

準備好服務(wù)端和客戶端證書后,我們就可以在 EMQ X 中啟用 TLS/SSL 雙向認證功能。

SSL/TLS 雙向連接的啟用及驗證

在 EMQ X 中 mqtt:ssl 的默認監(jiān)聽端口為 8883。

EMQ X 配置

將前文中通過 OpenSSL 工具生成的 emqx.pememqx.keymy_root_ca.pem 文件拷貝到 EMQ X 的 etc/certs/ 目錄下,并參考如下配置修改 emqx.conf

## listener.ssl.$name is the IP address and port that the MQTT/SSL
## Value: IP:Port | Port
listener.ssl.external = 8883

## Path to the file containing the user's private PEM-encoded key.
## Value: File
listener.ssl.external.keyfile = etc/certs/emqx.key

## Path to a file containing the user certificate.
## Value: File
listener.ssl.external.certfile = etc/certs/emqx.pem

## Path to the file containing PEM-encoded CA certificates. The CA certificates
## Value: File
listener.ssl.external.cacertfile = etc/certs/my_root_ca.pem

## A server only does x509-path validation in mode verify_peer,
## as it then sends a certificate request to the client (this
## message is not sent if the verify option is verify_none).
##
## Value: verify_peer | verify_none
listener.ssl.external.verify = verify_peer

MQTT 連接測試

當配置完成并重啟 EMQ X 后,我們使用 MQTT 客戶端工具 - MQTT X(該工具跨平臺且支持 MQTT 5.0),來驗證 TLS 雙向認證服務(wù)是否正常運行。

MQTT X 版本要求:v1.3.2 及以上版本

如何在EMQ X中為MQTT啟用雙向SSL/TLS安全連接

此時 Certificate 一欄需要選擇 Self signed ,并攜帶自簽名證書中生成的 my_root_ca.pem 文件, 客戶端證書 client.pem 和客戶端密鑰 client.key 文件。

如何在EMQ X中為MQTT啟用雙向SSL/TLS安全連接

EMQ X Dashboard 驗證

最后,打開 EMQ X 的 Dashboard 在 Listeners 頁面可以看到在 8883 端口上有一個 mqtt:ssl 連接。

至此,我們成功的完成了 EMQ X 服務(wù)器的 SSL/TLS 配置及雙向認證連接測試。

如何在EMQ X中為MQTT啟用雙向SSL/TLS安全連接

到此,相信大家對“如何在EMQ X中為MQTT啟用雙向SSL/TLS安全連接”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


網(wǎng)站標題:如何在EMQX中為MQTT啟用雙向SSL/TLS安全連接
URL網(wǎng)址:
http://weahome.cn/article/gosedj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部