0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

雅特力AT32 MCU基于mbed TLS的HTTPS服務(wù)器

雅特力 AT32 MCU ? 2024-01-06 08:14 ? 次閱讀

HTTPS概述

HTTPS的安全性是基于Transport Layer Security (TLS), TLS是一種網(wǎng)絡(luò)加密通信的方式,作為Secure Sockets Layer (SSL)的接續(xù)協(xié)議,TLS允許客戶端與服務(wù)端的互相驗(yàn)證。TLS以憑證為概念,憑證包含:公鑰、服務(wù)器身份、憑證頒發(fā)單位的簽名。對(duì)應(yīng)的私鑰永遠(yuǎn)不會(huì)公開(kāi),任何使用私鑰加密的密鑰數(shù)據(jù)只能用公鑰來(lái)解密,反之亦然。整個(gè)加密通信流程,可以透過(guò)圖1來(lái)簡(jiǎn)單描述:1.客戶端發(fā)起hello交握:給服務(wù)器的訊息有:

  • 包含時(shí)間戳的32位隨機(jī)數(shù)字client_random
  • 加密協(xié)定
  • 客戶端支持的加密方式

2. 服務(wù)端必須要有一套證書(shū),可以自制或向組織申請(qǐng)。自己頒發(fā)的證書(shū)需要客戶端驗(yàn)證通過(guò),才可以繼續(xù)訪問(wèn),使用受信任單位申請(qǐng)的證書(shū)不會(huì)彈出提示頁(yè)面。3. 一對(duì)公鑰和私鑰,可以想象成一把鑰匙(私鑰)和一個(gè)鎖頭(公鑰),把鎖頭給客戶端將重要的數(shù)據(jù)鎖起來(lái),客戶端將鎖好的數(shù)據(jù)傳給服務(wù)器,只有服務(wù)器有開(kāi)鎖的鑰匙可以解開(kāi),所以即使傳送過(guò)程被截取也無(wú)法破解。4. 對(duì)于客戶端的hello交握,服務(wù)端響應(yīng)以下訊息給客戶端:

  • 另一個(gè)包含時(shí)間戳的32位隨機(jī)數(shù)字server_random
  • 加密協(xié)定
  • 加密方式
  • 服務(wù)器證書(shū):包含擁有者名稱、網(wǎng)站地址、證書(shū)公鑰、證書(shū)頒發(fā)機(jī)構(gòu)數(shù)字簽名、過(guò)期時(shí)間等。

5. 客戶端驗(yàn)證服務(wù)器傳來(lái)的憑證是否有效?例如頒發(fā)機(jī)構(gòu)、過(guò)期時(shí)間等,如果發(fā)現(xiàn)異常,則會(huì)彈出一個(gè)警告框,提示證書(shū)存在問(wèn)題。(本應(yīng)用筆記不是使用第三方證書(shū)授權(quán)中心(CA)簽發(fā)的憑證,而是使用自己頒發(fā)的憑證,所以客戶端必須先取得簽發(fā)機(jī)構(gòu)的公鑰(下一節(jié)的kvm5.pem)來(lái)驗(yàn)證頒發(fā)機(jī)構(gòu)簽名,才不會(huì)彈出警告框)6. 在此之前的所有TLS交握訊息都是明文傳送,現(xiàn)在收到服務(wù)器的證書(shū)且驗(yàn)證沒(méi)問(wèn)題,則客戶端先產(chǎn)生PreMaster_Secret

  • 使用加密算法,例如:RSA, Diffie-Hellman,對(duì)server_random運(yùn)算產(chǎn)生。
  • 或稱PreMaster_Key
  • 是一個(gè)48個(gè)位的Key,前2個(gè)字節(jié)是協(xié)議版本號(hào),后46字節(jié)是用在對(duì)稱加密密鑰的隨機(jī)數(shù)字。

7. 客戶端用服務(wù)端送來(lái)的公鑰加密PreMaster_Secret。8. 客戶端將加密的PreMaster_Secret傳送給服務(wù)端,目的是讓服務(wù)端可以像客戶端用一樣隨機(jī)值產(chǎn)生Master_Secret。9. 服務(wù)端用私鑰解密PreMaster_Secret。

  • 此時(shí)客戶端與服服務(wù)端都有一份相同的PreMaster_Secret和隨機(jī)數(shù)client_random, server_random。
  • 使用client_random及server_random當(dāng)種子,結(jié)合PreMaster_Secret,客戶端和服務(wù)端將計(jì)算出同樣的Master_Secret。
  • 作為資料加解密相關(guān)的Key Material。

10. 作為資料加解密相關(guān)的Key Material。11. 作為資料加解密相關(guān)的Key Material。圖1. HTTPS原理9945cd70-ac28-11ee-aa22-92fbcf53809c.png

例 HTTPS服務(wù)器

功能簡(jiǎn)介

本示例需要使用到EMAC的功能,搭配LwIP協(xié)議棧,此協(xié)議棧有提供HTTPS的API, 但會(huì)使用到mbed TLS的加密功能,這包庫(kù)從Keil的官方網(wǎng)站或是透過(guò)Keil內(nèi)的Pack Installer可以獲得。圖2. 透過(guò)Run-Time管理器加入mbed TLS99530666-ac28-11ee-aa22-92fbcf53809c.png

資源準(zhǔn)備

1) 硬件環(huán)境:對(duì)應(yīng)產(chǎn)品型號(hào)的AT-START BOARD2) 軟件環(huán)境at32f4xx\project\mdk_v5

軟件設(shè)計(jì)

1) 配置流程

  • 配置EMAC功能
  • 初始化LwIP協(xié)議棧
  • 配置私鑰及CA憑證給服務(wù)器
  • 初始化HTTPS服務(wù)器

2) 代碼介紹

  • ssl_server函數(shù)代碼描述

996325d2-ac28-11ee-aa22-92fbcf53809c.png

使用OpenSSL建立自簽憑證

在本應(yīng)用筆記中,我們將使用自簽憑證來(lái)建立TLS聯(lián)機(jī),而發(fā)行自簽憑證會(huì)使用到OpenSSL這個(gè)工具,以下會(huì)簡(jiǎn)單介紹在Windows上及在Linux Ubuntu上,如何安裝OpenSSL。

  • Windows

因?yàn)镺penSSL未提供可執(zhí)行的安裝檔,因此我們透過(guò)Git for Windows來(lái)達(dá)到安裝OpenSSL的目的;當(dāng)安裝完成后,默認(rèn)執(zhí)行文件路徑為C:\ProgramFiles\Git\usr\bin\openssl.exe,你可以將C:\Program Files\Git\usr\bin路徑加入到PATH環(huán)境變量之中,以后就可以直接輸入openssl來(lái)執(zhí)行此工具。

  • Ubuntu

只需要在終端機(jī)中下命令997e9826-ac28-11ee-aa22-92fbcf53809c.png在確定PC上有OpenSSL這個(gè)工具后,基本上只要按照以下步驟,就一定可以建立出合法的自簽憑證:1.?建立ssl.conf配置文件9988a118-ac28-11ee-aa22-92fbcf53809c.png上述配置文件內(nèi)容的[dn]區(qū)段(Distinguished Name)為憑證的相關(guān)信息,你可以自由調(diào)整為你想設(shè)定的內(nèi)容,其中O(Organization)是公司名稱,OU(Organization Unit)是部門名稱,而CN(Common Name)則是憑證名稱,你可以設(shè)定任意名稱,設(shè)定中文也可以,但請(qǐng)記得檔案要以UTF-8編碼存盤(pán),且不能有BOM字符。配置文件的[alt_names]區(qū)段,則是用來(lái)設(shè)定SSL憑證的域名,這部分設(shè)定相當(dāng)重要,如果沒(méi)有設(shè)定的話,許多瀏覽器都會(huì)將憑證視為無(wú)效憑證。這部分你要設(shè)定幾組域名都可以,基本上沒(méi)有什么上限,因?yàn)樽院瀾{證主要目的是用來(lái)開(kāi)發(fā)測(cè)試之用,因此建議可以把可能會(huì)用到的本機(jī)域名(localhost)或是局域網(wǎng)絡(luò)的IP地址都加上去,以便后續(xù)進(jìn)行遠(yuǎn)程聯(lián)機(jī)測(cè)試。2.?打開(kāi)終端機(jī)工具后,切換到存放ssl.conf的目錄下后,透過(guò)OpenSSL命令產(chǎn)生出自簽憑證與相對(duì)應(yīng)的私鑰,輸入以下命令就可以建立出私鑰(server.key)與憑證檔案(server.crt):99aa4d22-ac28-11ee-aa22-92fbcf53809c.png生成的私鑰與憑證檔案會(huì)跟ssl.conf在同一個(gè)目錄下。3.?匯入自簽憑證到「受信任的跟證書(shū)授權(quán)單位」光是建立好自簽憑證還是不夠的,網(wǎng)站服務(wù)器也設(shè)定正確才行,這畢竟是一個(gè)PKI基礎(chǔ)架構(gòu),你還必須讓所有需要安全聯(lián)機(jī)的端點(diǎn)都能互相信任才行,因此你還須將建立好的自簽憑證安裝到「受信任的跟證書(shū)授權(quán)單位」之中,這樣子你的操作系統(tǒng)或?yàn)g覽器才能將你的自簽憑證視為「可信任的聯(lián)機(jī)」。以下為手動(dòng)匯入的步驟:

  • 開(kāi)啟檔案總管,并鼠標(biāo)雙擊server.crt檔案
  • 點(diǎn)擊「安裝憑證」按鈕
  • 選取「目前使用者」并按「下一步」繼續(xù)
  • 選取「將所有憑證放入以下的存放區(qū)」并按下「瀏覽」按鈕
  • 選取「受信任的跟證書(shū)授權(quán)單位」并按下「確定」
  • 按「下一步」繼續(xù)
  • 按「完成」繼續(xù)
  • 在安全性警告窗口按下「是(Y)」即可完成設(shè)定

4.將私鑰及憑證匯入到TLS serverTLS server負(fù)責(zé)解密數(shù)據(jù),在本應(yīng)用筆記中就是MCU端,分別將私鑰及憑證填入demo code中的mbedtls_test_srv_key及mbedtls_test_srv_crt即可。

實(shí)驗(yàn)效果

  • 瀏覽器的網(wǎng)址以HTTPS開(kāi)頭,且鎖頭圖示為上鎖的狀態(tài)

圖3. HTTPS頁(yè)面99b4e304-ac28-11ee-aa22-92fbcf53809c.png

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    17194

    瀏覽量

    351863
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    9246

    瀏覽量

    85730
  • https
    +關(guān)注

    關(guān)注

    0

    文章

    52

    瀏覽量

    6169
  • 雅特力
    +關(guān)注

    關(guān)注

    0

    文章

    160

    瀏覽量

    8079
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    AT32F407/407A系列MCU,可輕松替換STM32F107/207/407

    網(wǎng)關(guān), 串口服務(wù)器, 微打印機(jī), 舞臺(tái)燈光, 工控, 安防, LED顯示屏, 工業(yè)機(jī)器人, 5G應(yīng)用>>32位MCU
    發(fā)表于 01-22 14:36

    如何基于HTTP Web服務(wù)器示例實(shí)現(xiàn)TLS HTTPS服務(wù)器?

    我正在嘗試基于此 HTTP Web 服務(wù)器示例實(shí)現(xiàn) TLS HTTPS 服務(wù)器https://github.com/STMicroelec
    發(fā)表于 01-04 06:23

    AT32 EMAC客戶端和服務(wù)器

    AT32 EMAC client and server本文以的AT32F407系列,演示了一系列的范例
    發(fā)表于 10-24 07:39

    AT32 MCU QSPI應(yīng)用說(shuō)明

    AT32 MCU QSPI Application Note主要介紹以下幾部分內(nèi)容:1. 基于提供的V2.x.x 的BSP 板級(jí)支持包
    發(fā)表于 10-25 06:18

    AT32基于mbed TLSHTTPS服務(wù)器

    AT32基于mbed TLSHTTPS服務(wù)器介紹如何使用mbed
    發(fā)表于 10-26 08:24

    攜高效能AT32 MCU“芯”動(dòng)亮相ICCAD 2020

    高峰論壇,獲得了業(yè)界人士、廣大客戶及眾多媒體的廣泛關(guān)注。 (供圖,下同) 在同期舉辦的IP 與 IC 設(shè)計(jì)專題論壇上,
    的頭像 發(fā)表于 12-16 17:12 ?2086次閱讀

    攜高性能AT32 MCU精彩亮相全球MCU生態(tài)發(fā)展大會(huì)

    技術(shù)、邊緣AI、新興應(yīng)用和生態(tài)發(fā)展等熱門議題。 業(yè)務(wù)處長(zhǎng)陳佳延在大會(huì)發(fā)表了題為“
    的頭像 發(fā)表于 08-30 10:04 ?4540次閱讀
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>攜高性能<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>精彩亮相全球<b class='flag-5'>MCU</b>生態(tài)發(fā)展大會(huì)

    AT32 SPI

    AT32 SPI 科技AT32F415系
    發(fā)表于 03-30 10:44 ?506次閱讀

    攜高性能AT32 MCU精彩亮相D Forum 2021 微控制論壇

    AT32高效能MCU平臺(tái)–持續(xù)布局多元化應(yīng)用市場(chǎng)”的主題演講。產(chǎn)品與行銷處長(zhǎng)杜立博先生在演講中首先介紹了公司近幾年來(lái)取得的成績(jī),
    的頭像 發(fā)表于 02-24 09:33 ?748次閱讀
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>攜高性能<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>精彩亮相D Forum 2021 微控制<b class='flag-5'>器</b>論壇

    攜高性能AT32 MCU精彩亮相全球MCU生態(tài)發(fā)展大會(huì)

    技術(shù)、邊緣AI、新興應(yīng)用和生態(tài)發(fā)展等熱門議題。業(yè)務(wù)處長(zhǎng)陳佳延在大會(huì)發(fā)表了題為“AT3
    的頭像 發(fā)表于 02-24 09:31 ?584次閱讀
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>攜高性能<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>精彩亮相全球<b class='flag-5'>MCU</b>生態(tài)發(fā)展大會(huì)

    展臺(tái)首日速遞,AT32 MCU精彩亮相

    8月23日,elexcon2023深圳國(guó)際電子展在深圳會(huì)展中心(福田)正式拉開(kāi)帷幕!攜AT32MCU精彩亮相,電機(jī)控制、工業(yè)控制、消費(fèi)&商務(wù)、電力&電源、智能家電及汽車電子等
    的頭像 發(fā)表于 08-24 08:17 ?654次閱讀
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>展臺(tái)首日速遞,<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>精彩亮相

    如何使用AT32 MCU定時(shí)進(jìn)行PWM輸入測(cè)試

    如何使用AT32 MCU定時(shí)進(jìn)行PWM輸入測(cè)試
    的頭像 發(fā)表于 10-27 14:20 ?2970次閱讀
    如何使用<b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>定時(shí)<b class='flag-5'>器</b>進(jìn)行PWM輸入測(cè)試

    AT32 MCU實(shí)現(xiàn)高效電機(jī)驅(qū)動(dòng)控制與應(yīng)用

    發(fā)展。受邀出席此次會(huì)議,產(chǎn)品市場(chǎng)總監(jiān)林金海發(fā)表了題為“AT32
    的頭像 發(fā)表于 11-17 08:15 ?862次閱讀
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>實(shí)現(xiàn)高效電機(jī)驅(qū)動(dòng)控制與應(yīng)用

    AT32 MCU與SEGGER攜手合作,開(kāi)發(fā)量產(chǎn)事半功倍

    近日,與SEGGER共同宣布J-Link仿真調(diào)試與Flasher在線燒錄全面支持AT32MCU
    的頭像 發(fā)表于 02-22 08:13 ?506次閱讀
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>與SEGGER攜手合作,開(kāi)發(fā)量產(chǎn)事半功倍

    AT32 MCU與SEGGER攜手合作,開(kāi)發(fā)量產(chǎn)事半功倍

    近日,與SEGGER共同宣布J-Link仿真調(diào)試與Flasher在線燒錄全面支持AT32
    的頭像 發(fā)表于 02-23 10:27 ?441次閱讀