31-STM32+W5500+AIR202/302基本控制篇-功能優化-W5500移植mbedtls庫以SSL方式連接MQTT服務器(單向忽略認證)


<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/STM32W5500AIR202A/" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>

 

說明

在網絡通信中,如果不加上SSL,那么信息就以明文的方式暴露在網絡通信中

這節移植mbedtls庫,讓W5500以SSL方式連接MQTT服務器.

 

測試

1.打開本節代碼

 

 

2.默認連接本人的服務器測試(服務器端口為8883)

 

 

 

 

 

3.下載到單片機(接上網線)

 

 

 

4.觀察日志打印口,確定連接了服務器

 

 

 

 

5.打開MQTT調試助手和開發板通信(注意修改主題)

 

 

 

 

 

 

 

程序說明

本想用網絡監控助手監控下,但是因為W5500通信不涉及到電腦

所以我不知道如何用電腦上面的 Wireshark 軟件監控監控數據!!!

但是呢此程序我使用了WiFi模塊測試了,確實加密了!

 

1.軟件選擇的C99模式(否則編譯報錯)

 

 

 

 

2.先說幾個自己需要實現的函數(時間函數)

 

 

 

3.隨機數函數

 

 

4.網絡接收處理函數

SSL的底層獲取數據的方式是指明需要多少個數據,然后咱再返回多少個數據.

所以我把數據存儲到了環形隊列,SSL要多少我就給多少.

 

 

 

5.網絡發送函數

 

 

 

 

 

6. SSL初始化

 

 

 

 

 

 

7.等待SSL握手完成(商議好最終通信的對稱加密方式和秘鑰)

其實最底層還是TCP,只不過是經過SSL對通信做了驗證,對數據進行了加密.

所以首先還是需要TCP連接,然后再進行SSL.

 

 

 

 

8.以后接收數據使用的是 mbedtls_ssl_read

 

 

 

 

 

9.以后發送數據調用的是 mbedtls_ssl_write

 

 

 

 

 

 

 

 

 

結語

 

1.忘了說一件事情,調整了堆區大小

mbedtls庫占用的內存有點高哈!這可不行!后面的時間我看看怎么做優化

 

 

 

2.為了節省內存開銷,我設置了套件是下面這個,請根據自己的服務器修改

 

 

 

 

 

3.其實整體上看,最終SSL就相當於把數據做了一次中轉.

當然還有做驗證,這一節沒有寫證書驗證部分,是因為內存吃力!!!

后面的日子里我好好研究下源碼,看看怎么省內存.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM