文章分享

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

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

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

摘錄:HCTech 無(wú)錫和控電子   時(shí)間:2020-08-07   訪問(wèn)量:3234

我們?cè)谏掀恼吕锩嬉呀?jīng)搭建好了一個(gè)MQTT服務(wù)器,并且進(jìn)行了簡(jiǎn)單的發(fā)布和訂閱的測(cè)試。但是,我們默認(rèn)使用的是TCP明文傳輸,

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

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

TLS安全連接基本原理

這是一個(gè)簡(jiǎn)單的TLS的過(guò)程,服務(wù)器和客戶端從CA證書(shū)中心取得CA證書(shū),服務(wù)器生成自己的私鑰和證書(shū),客戶端用ca證書(shū)對(duì)服務(wù)器的證書(shū)進(jìn)行驗(yàn)證,驗(yàn)證通過(guò)說(shuō)明服務(wù)器是合法的,如果驗(yàn)證不過(guò)則不與服務(wù)器通信。驗(yàn)證通過(guò)之后使用一對(duì)公鑰和密鑰進(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加密,如果沒(méi)有這個(gè)選項(xiàng)表示不加密密鑰文件。-out 制定輸出文件的名字(.key)2048 表示密鑰長(zhǎng)度。

2、生成CA證書(shū)

#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: 請(qǐng)求生成證書(shū)認(rèn)證-new: 生成一個(gè)新的證書(shū). 它會(huì)提示填充證書(shū)的一些參數(shù).-x509: 簽發(fā)X.509格式證書(shū) .-days: 指定證書(shū)的有效期限,單位天.-key: 指定生成證書(shū)的私鑰文件.-out: 指定生成的證書(shū)文件名(.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端請(qǐng)求文件(.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ù)端的證書(shū)

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

這時(shí)候在證書(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 -------- 證書(shū)文件

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

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

7、啟動(dòng)mosquitto

使用mosquitto.conf配置文件啟動(dòng)

8、啟動(dòng)客戶端

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

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

上圖看到客戶端連接上了

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

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

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


上一篇:https建立連接過(guò)程

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

在線咨詢

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

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

在線咨詢

免費(fèi)通話

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

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

免費(fèi)通話

微信掃一掃

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