文章分享

開放、平等、協(xié)作、快速、分享

當(dāng)前位置:首頁>文章分享

在MQTT服務(wù)器上使用TLS進(jìn)行安全通信

摘錄:HCTech 無錫和控電子   時(shí)間:2020-08-07   訪問量:3106

我們在上篇文章里面已經(jīng)搭建好了一個(gè)MQTT服務(wù)器,并且進(jìn)行了簡單的發(fā)布和訂閱的測試。但是,我們默認(rèn)使用的是TCP明文傳輸,

從上圖看出,如果被別有用心的人抓包就可以獲取我們的通信內(nèi)容,沒有任何隱私,黑客還可以惡意發(fā)布信息給服務(wù)器,如果是在工業(yè)交通等重要場合則后果不堪設(shè)想。

我們需要在服務(wù)器端和客戶端都是使用TLS來加密我們的信息,保證信息的安全性。

TLS安全連接基本原理

這是一個(gè)簡單的TLS的過程,服務(wù)器和客戶端從CA證書中心取得CA證書,服務(wù)器生成自己的私鑰和證書,客戶端用ca證書對服務(wù)器的證書進(jìn)行驗(yàn)證,驗(yàn)證通過說明服務(wù)器是合法的,如果驗(yàn)證不過則不與服務(wù)器通信。驗(yàn)證通過之后使用一對公鑰和密鑰進(jìn)行加解密通信,中間的報(bào)文都是加密的。

MQTT使用TLS安全連接步驟:

1、生成CA私鑰文件

#mkdir Myca

#cd Myca

# openssl genrsa -des3 -out ca.key 2048

#ls -l

-rwxrwxrwx 1 root root 1743 9月 5 00:08 ca.key

可以看到生成了ca的密鑰文件。

參數(shù)解釋:

genrsa 表示生成RSA私鑰-des3 表示密鑰文件使用DES3加密,如果沒有這個(gè)選項(xiàng)表示不加密密鑰文件。-out 制定輸出文件的名字(.key)2048 表示密鑰長度。

2、生成CA證書

#openssl req -new -x509 -days 3650 -key ca.key -out ca.crt

# ls -l

-rwxrwxrwx 1 root root 1367 9月 6 00:58 ca.crt

rwxrwxrwx 1 root root 1679 9月 6 00:58 ca.key

參數(shù)解釋:

req: 請求生成證書認(rèn)證-new: 生成一個(gè)新的證書. 它會提示填充證書的一些參數(shù).-x509: 簽發(fā)X.509格式證書 .-days: 指定證書的有效期限,單位天.-key: 指定生成證書的私鑰文件.-out: 指定生成的證書文件名(.crt).

3、生成server的私鑰

#openssl genrsa -out server.key 2048

#ls -l

-rwxrwxrwx 1 root root 1367 9月 6 00:58 ca.crt

-rwxrwxrwx 1 root root 1679 9月 6 00:58 ca.key

-rwxrwxrwx 1 root root 1679 9月 6 01:02 server.key ------生成的 server.key

4、生成server端請求文件(.csr)

#openssl req -new -out server.csr -key server.key

Country Name (2 letter code) [AU]:CN

State or Province Name (full name) [Some-State]:bj

Locality Name (eg, city) []:bj

Organization Name (eg, company) [Internet Widgits Pty Ltd]:aaa

Organizational Unit Name (eg, section) []:bbb

Common Name (e.g. server FQDN or YOUR name) []:192.168.1.102

Email Address []:test@test.com

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:

An optional company name []:

5、生成服務(wù)端的證書

#openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 3600

這時(shí)候在證書目錄下有下面文件

-rwxrwxrwx 1 root root 1367 9月 6 00:58 ca.crt

-rwxrwxrwx 1 root root 1679 9月 6 00:58 ca.key

-rwxrwxrwx 1 root root 17 9月 6 01:10 ca.srl

-rwxrwxrwx 1 root root 1249 9月 6 01:10 server.crt

-rwxrwxrwx 1 root root 1029 9月 6 01:08 server.csr

-rwxrwxrwx 1 root root 1679 9月 6 01:02 server.key

6、修改mosquitto.conf文件

port 1884 -----設(shè)置TLS端口 為1884

cafile /myca/ca.crt -------- 證書文件

certfile /myca/server.crt ------------服務(wù)器證書文件

keyfile /myca/server.key ------------服務(wù)器私鑰文件

7、啟動mosquitto

使用mosquitto.conf配置文件啟動

8、啟動客戶端

http://www.jensd.de/apps/mqttfx/1.7.0/

在客戶端上先要設(shè)置下TLS訪問,和證書

上圖看到客戶端連接上了

發(fā)一個(gè)消息看看報(bào)文。

可以看到報(bào)文已經(jīng)加密,無法看到報(bào)文的內(nèi)容。

鄭重聲明:本文作品為原創(chuàng),如轉(zhuǎn)載須注明出處“百家號:物聯(lián)網(wǎng)電子世界”。


上一篇:https建立連接過程

下一篇:使用MQTT.fx接入物聯(lián)網(wǎng)平臺(阿里云)

在線咨詢

點(diǎn)擊這里給我發(fā)消息 售前咨詢專員

點(diǎn)擊這里給我發(fā)消息 售后服務(wù)專員

在線咨詢

免費(fèi)通話

24小時(shí)免費(fèi)咨詢

請輸入您的聯(lián)系電話,座機(jī)請加區(qū)號

免費(fèi)通話

微信掃一掃

微信聯(lián)系
返回頂部