0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

雅特力AT32 MCU基于mbed TLS的HTTPS服务器

雅特力 AT32 MCU 2024-01-06 08:14 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

HTTPS概述

HTTPS的安全性是基于Transport Layer Security (TLS), TLS是一种网络加密通信的方式,作为Secure Sockets Layer (SSL)的接续协议,TLS允许客户端与服务端的互相验证。TLS以凭证为概念,凭证包含:公钥、服务器身份、凭证颁发单位的签名。对应的私钥永远不会公开,任何使用私钥加密的密钥数据只能用公钥来解密,反之亦然。整个加密通信流程,可以透过图1来简单描述:1.客户端发起hello交握:给服务器的讯息有:

  • 包含时间戳的32位随机数字client_random
  • 加密协定
  • 客户端支持的加密方式

2. 服务端必须要有一套证书,可以自制或向组织申请。自己颁发的证书需要客户端验证通过,才可以继续访问,使用受信任单位申请的证书不会弹出提示页面。3. 一对公钥和私钥,可以想象成一把钥匙(私钥)和一个锁头(公钥),把锁头给客户端将重要的数据锁起来,客户端将锁好的数据传给服务器,只有服务器有开锁的钥匙可以解开,所以即使传送过程被截取也无法破解。4. 对于客户端的hello交握,服务端响应以下讯息给客户端:

  • 另一个包含时间戳的32位随机数字server_random
  • 加密协定
  • 加密方式
  • 服务器证书:包含拥有者名称、网站地址、证书公钥、证书颁发机构数字签名、过期时间等。

5. 客户端验证服务器传来的凭证是否有效?例如颁发机构、过期时间等,如果发现异常,则会弹出一个警告框,提示证书存在问题。(本应用笔记不是使用第三方证书授权中心(CA)签发的凭证,而是使用自己颁发的凭证,所以客户端必须先取得签发机构的公钥(下一节的kvm5.pem)来验证颁发机构签名,才不会弹出警告框)6. 在此之前的所有TLS交握讯息都是明文传送,现在收到服务器的证书且验证没问题,则客户端先产生PreMaster_Secret

  • 使用加密算法,例如:RSA, Diffie-Hellman,对server_random运算产生。
  • 或称PreMaster_Key
  • 是一个48个位的Key,前2个字节是协议版本号,后46字节是用在对称加密密钥的随机数字。

7. 客户端用服务端送来的公钥加密PreMaster_Secret。8. 客户端将加密的PreMaster_Secret传送给服务端,目的是让服务端可以像客户端用一样随机值产生Master_Secret。9. 服务端用私钥解密PreMaster_Secret。

  • 此时客户端与服服务端都有一份相同的PreMaster_Secret和随机数client_random, server_random。
  • 使用client_random及server_random当种子,结合PreMaster_Secret,客户端和服务端将计算出同样的Master_Secret。
  • 作为资料加解密相关的Key Material。

10. 作为资料加解密相关的Key Material。11. 作为资料加解密相关的Key Material。图1. HTTPS原理9945cd70-ac28-11ee-aa22-92fbcf53809c.png

例 HTTPS服务器

功能简介

本示例需要使用到EMAC的功能,搭配LwIP协议栈,此协议栈有提供HTTPS的API, 但会使用到mbed TLS的加密功能,这包库从Keil的官方网站或是透过Keil内的Pack Installer可以获得。图2. 透过Run-Time管理器加入mbed TLS99530666-ac28-11ee-aa22-92fbcf53809c.png

资源准备

1) 硬件环境:对应产品型号的AT-START BOARD2) 软件环境at32f4xx\project\mdk_v5

软件设计

1) 配置流程

  • 配置EMAC功能
  • 初始化LwIP协议栈
  • 配置私钥及CA凭证给服务器
  • 初始化HTTPS服务器

2) 代码介绍

  • ssl_server函数代码描述

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

使用OpenSSL建立自签凭证

在本应用笔记中,我们将使用自签凭证来建立TLS联机,而发行自签凭证会使用到OpenSSL这个工具,以下会简单介绍在Windows上及在Linux Ubuntu上,如何安装OpenSSL。

  • Windows

因为OpenSSL未提供可执行的安装档,因此我们透过Git for Windows来达到安装OpenSSL的目的;当安装完成后,默认执行文件路径为C:\ProgramFiles\Git\usr\bin\openssl.exe,你可以将C:\Program Files\Git\usr\bin路径加入到PATH环境变量之中,以后就可以直接输入openssl来执行此工具。

  • Ubuntu

只需要在终端机中下命令997e9826-ac28-11ee-aa22-92fbcf53809c.png在确定PC上有OpenSSL这个工具后,基本上只要按照以下步骤,就一定可以建立出合法的自签凭证:1. 建立ssl.conf配置文件9988a118-ac28-11ee-aa22-92fbcf53809c.png上述配置文件内容的[dn]区段(Distinguished Name)为凭证的相关信息,你可以自由调整为你想设定的内容,其中O(Organization)是公司名称,OU(Organization Unit)是部门名称,而CN(Common Name)则是凭证名称,你可以设定任意名称,设定中文也可以,但请记得档案要以UTF-8编码存盘,且不能有BOM字符。配置文件的[alt_names]区段,则是用来设定SSL凭证的域名,这部分设定相当重要,如果没有设定的话,许多浏览器都会将凭证视为无效凭证。这部分你要设定几组域名都可以,基本上没有什么上限,因为自签凭证主要目的是用来开发测试之用,因此建议可以把可能会用到的本机域名(localhost)或是局域网络的IP地址都加上去,以便后续进行远程联机测试。2. 打开终端机工具后,切换到存放ssl.conf的目录下后,透过OpenSSL命令产生出自签凭证与相对应的私钥,输入以下命令就可以建立出私钥(server.key)与凭证档案(server.crt):99aa4d22-ac28-11ee-aa22-92fbcf53809c.png生成的私钥与凭证档案会跟ssl.conf在同一个目录下。3. 汇入自签凭证到「受信任的跟证书授权单位」光是建立好自签凭证还是不够的,网站服务器也设定正确才行,这毕竟是一个PKI基础架构,你还必须让所有需要安全联机的端点都能互相信任才行,因此你还须将建立好的自签凭证安装到「受信任的跟证书授权单位」之中,这样子你的操作系统或浏览器才能将你的自签凭证视为「可信任的联机」。以下为手动汇入的步骤:

  • 开启档案总管,并鼠标双击server.crt档案
  • 点击「安装凭证」按钮
  • 选取「目前使用者」并按「下一步」继续
  • 选取「将所有凭证放入以下的存放区」并按下「浏览」按钮
  • 选取「受信任的跟证书授权单位」并按下「确定」
  • 按「下一步」继续
  • 按「完成」继续
  • 在安全性警告窗口按下「是(Y)」即可完成设定

4.将私钥及凭证汇入到TLS serverTLS server负责解密数据,在本应用笔记中就是MCU端,分别将私钥及凭证填入demo code中的mbedtls_test_srv_key及mbedtls_test_srv_crt即可。

实验效果

  • 浏览器的网址以HTTPS开头,且锁头图示为上锁的状态

图3. HTTPS页面99b4e304-ac28-11ee-aa22-92fbcf53809c.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    147

    文章

    18611

    浏览量

    387136
  • 服务器
    +关注

    关注

    13

    文章

    10093

    浏览量

    90886
  • https
    +关注

    关注

    0

    文章

    54

    浏览量

    7562
  • 雅特力
    +关注

    关注

    0

    文章

    190

    浏览量

    9073
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    AT32F407/407A系列MCU,可轻松替换STM32F107/207/407

    网关, 串口服务器, 微打印机, 舞台灯光, 工控, 安防, LED显示屏, 工业机器人, 5G应用>>32位MCU
    发表于 01-22 14:36

    如何基于HTTP Web服务器示例实现TLS HTTPS服务器

    我正在尝试基于此 HTTP Web 服务器示例实现 TLS HTTPS 服务器https://github.com/STMicroelec
    发表于 01-04 06:23

    AT32 EMAC客户端和服务器

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

    AT32 MCU QSPI应用说明

    AT32 MCU QSPI Application Note主要介绍以下几部分内容:1. 基于提供的V2.x.x 的BSP 板级支持包
    发表于 10-25 06:18

    AT32基于mbed TLSHTTPS服务器

    AT32基于mbed TLSHTTPS服务器介绍如何使用mbed
    发表于 10-26 08:24

    携高效能AT32 MCU“芯”动亮相ICCAD 2020

    高峰论坛,获得了业界人士、广大客户及众多媒体的广泛关注。 (供图,下同) 在同期举办的IP 与 IC 设计专题论坛上,
    的头像 发表于 12-16 17:12 2645次阅读

    携高性能AT32 MCU精彩亮相全球MCU生态发展大会

    技术、边缘AI、新兴应用和生态发展等热门议题。 业务处长陈佳延在大会发表了题为“
    的头像 发表于 08-30 10:04 5186次阅读
    <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>生态发展大会

    AT32 SPI

    AT32 SPI 科技AT32F415系
    发表于 03-30 10:44 836次阅读

    携高性能AT32 MCU精彩亮相D Forum 2021 微控制论坛

    AT32高效能MCU平台–持续布局多元化应用市场”的主题演讲。产品与行销处长杜立博先生在演讲中首先介绍了公司近几年来取得的成绩,
    的头像 发表于 02-24 09:33 1338次阅读
    <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生态发展大会

    技术、边缘AI、新兴应用和生态发展等热门议题。业务处长陈佳延在大会发表了题为“AT3
    的头像 发表于 02-24 09:31 921次阅读
    <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>生态发展大会

    展台首日速递,AT32 MCU精彩亮相

    8月23日,elexcon2023深圳国际电子展在深圳会展中心(福田)正式拉开帷幕!携AT32MCU精彩亮相,电机控制、工业控制、消费&商务、电力&电源、智能家电及汽车电子等
    的头像 发表于 08-24 08:17 1203次阅读
    <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>精彩亮相

    如何使用AT32 MCU定时进行PWM输入测试

    如何使用AT32 MCU定时进行PWM输入测试
    的头像 发表于 10-27 14:20 4761次阅读
    如何使用<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'>器</b>进行PWM输入测试

    AT32 MCU实现高效电机驱动控制与应用

    发展。受邀出席此次会议,产品市场总监林金海发表了题为“AT32
    的头像 发表于 11-17 08:15 1432次阅读
    <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>实现高效电机驱动控制与应用

    AT32 MCU与SEGGER携手合作,开发量产事半功倍

    近日,与SEGGER共同宣布J-Link仿真调试与Flasher在线烧录全面支持AT32
    的头像 发表于 02-23 10:27 933次阅读

    AT32 MCU推动低空经济发展

    AT32系列MCU凭借288MHz主频与高精度外设,为无人机飞控、电调及云台提供核心算
    的头像 发表于 12-04 09:53 846次阅读
    <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>推动低空经济发展