国产熟睡乱子伦视频_激情五月综网站点_中文字幕乱偷无码_国产日韩综合第一页_在线观看亚色视频区一区二_八戒八戒神马影院免费_国产av黄色电影_4hu四虎永久在线影院97年小娇妻_台湾佬自偷自拍情侣在线_秋霞成人永久免费网站

當(dāng)前位置: 首頁 >應(yīng)用方案 >技術(shù)應(yīng)用 >

ESP32芯片模塊SSL/TLS協(xié)議應(yīng)用概述

SSL/TLS協(xié)議簡介

SSL協(xié)議工作在傳輸層與應(yīng)用層協(xié)議之間,為數(shù)據(jù)通訊提供安全支持。TLS 1.0IETFInternet工程任務(wù)組)制定的一種新的通信協(xié)議,TLS是建立在SSL 3.0協(xié)議規(guī)范之上

SSL/TLS協(xié)議提供的服務(wù)主要有:

密鑰協(xié)商過程——TLS握手

TLS協(xié)議

1、客戶端請求(ClientHello)

TLS握手階段,客戶端首先服務(wù)端提供以下信息:

2、服務(wù)器回應(yīng)(SeverHello)

服務(wù)端在接收到客戶端的Client Hello之后服務(wù)器的回應(yīng)包含以下內(nèi)容:

3、客戶端回應(yīng)(Certificate Verify)

Client Key Exchange

如果服務(wù)端需要對客戶端進(jìn)行驗(yàn)證,在客戶端收到服務(wù)端的Server Hello消息之后,首先需要向服務(wù)端發(fā)送客戶端的證書,讓服務(wù)端來驗(yàn)證客戶端的合法性。

Certificate Verify

接著,客戶端需要對服務(wù)端的證書進(jìn)行檢查,然后,向服務(wù)器發(fā)送下面三項(xiàng)信息:

  1. 一個(gè)用服務(wù)器公鑰加密的隨機(jī)數(shù)

  2. 編碼改變通知,表示隨后的信息都將用雙方商定的加密方法和密鑰發(fā)送

  3. 客戶端握手完成的通知(即前面所有通訊內(nèi)容的hash值)

4、服務(wù)器的最后回應(yīng)(Server Finish)

服務(wù)端會使用協(xié)商出來的密鑰,加密一段finish消息發(fā)送給客戶端,客戶端若能正確解析,則證明協(xié)商成功,可以正常進(jìn)行后續(xù)的應(yīng)用層數(shù)據(jù)收發(fā)。

5、應(yīng)用數(shù)據(jù)傳輸

在所有的握手階段都完成之后,就可以開始傳送應(yīng)用數(shù)據(jù)了。

ESP32芯片模塊上建立SSL/TLS通信工程

可以參考IDF的示例工程 “https_mbedtls” “mqtt_ssl_example_test”等。

TLS連接過程中,應(yīng)用層開發(fā)主要需要關(guān)注的是

1、CA證書,TLS在驗(yàn)證服務(wù)器證書時(shí)需要用服務(wù)器的證書發(fā)布機(jī)構(gòu)(CA)的證書(即根證書),該證書是CA給自己頒發(fā)的證書,且通過該證書為服務(wù)器頒發(fā)證書,客服端通過根證書驗(yàn)證服務(wù)器下發(fā)的證書。瀏覽器內(nèi)置了根證書鏈,所以我們通過瀏覽器上網(wǎng)時(shí),不需要手動添加證書。ESP32上面可以選擇將SDK內(nèi)置根證書鏈編譯到程序內(nèi)部,這樣就能在面對大部分服務(wù)器時(shí)都能不需要指定根證書,但若要添加或者證書更新,則需要下載新的根證書捆綁包編譯后,更新程序才能替換。同時(shí)也可以配置目標(biāo)服務(wù)器的CA證書。

2、客戶端證書與公鑰,若要使用TLS雙向驗(yàn)證,則需要服務(wù)器下發(fā)客戶端證書與客戶端公鑰,在ESP32中若服務(wù)器要驗(yàn)證客戶端證書,僅需將服務(wù)器為客戶端生成的證書與密鑰填入TLS庫相應(yīng)位置。

關(guān)于ESP32SSL/TLS需要補(bǔ)充的是

1crt_bundle_attachesp_crt_bundle_attach,在初始化esp_tls_cfg_t結(jié)構(gòu)體的時(shí)候,若設(shè)置了crt_bundle_attach的函數(shù)為esp_crt_bundle_attach,則TLS庫在校驗(yàn)服務(wù)器證書的時(shí)候,會從編譯進(jìn)代碼區(qū)的CA捆包來查找并驗(yàn)證服務(wù)器證書,而不需要手動設(shè)置,具體參考樂鑫手冊(若使用證書捆綁包,程序會大60k左右)。

esp_tls_cfg_t cfg = {

       .clientcert_buf = (const unsigned char *) client_cert_pem_start,

       .clientcert_bytes = sizeof(client_cert_pem_start),

       .clientkey_buf = client_key_cert_pem_start,

       .clientkey_bytes = sizeof(client_key_cert_pem_start),

       .crt_bundle_attach = esp_crt_bundle_attach,

   };


2、若要跳過服務(wù)器證書驗(yàn)證,通過idf.py menuconfig配置使能Component config->ESP-TLS->[*] Allow potentially insecure options->[*] Skip server ...,并且tls config結(jié)構(gòu)體中去掉cert_pem證書,

3、https的雙向證書驗(yàn)證,與自簽證書問題

3.1、服務(wù)器需要配置一個(gè)受信任的證書

3.2、客戶端的證書需要客戶端通過自簽名CA,且給客戶端生成證書與密鑰

3.3、skip_common_name,可以跳過對于服務(wù)器證書的"CN"字段的驗(yàn)證,若使能該設(shè)置,對于服務(wù)器自簽證書,可能會有幫助。


今天的分享就到這里啦,EBYTE每一天都致力于更好的助力物聯(lián)化、智能化、自動化的發(fā)展,提升資源利用率,更多產(chǎn)品更多資料,感興趣的小伙伴可以登錄我們的億佰特官網(wǎng)進(jìn)行了解,也可以直接撥打400電話咨詢技術(shù)專員!


相關(guān)閱讀:

1、單片機(jī)常用的幾種通信協(xié)議

2、單片機(jī)系統(tǒng)針對網(wǎng)絡(luò)加密通訊的優(yōu)化方法

3、一文看懂IO基礎(chǔ)知識和單片機(jī)GPIO工作模式簡介



4000-330-990

https://www.wjx.cn/jq/84863372.aspx