mbedtls学习1.mbedtsl是什么?

mbedtls:嵌入式设备的轻量级SSL/TLS库
mbedtls是一个由ARM公司维护的开源SSL/TLS库,专注于小型编码占用空间和易用性。它支持SSLv3到TLSv1.2协议,包括X.509证书处理、TCP和UDP上的加密传输。RT-Thread对其进行了移植,提供了证书配置、内存优化和示例程序等功能。用户可以通过menuconfig启用mbedtls,并选择证书、内存配置和示例程序。软件包遵循Apache License Version 2.0协议。

1、介绍

mbedTLS(前身 PolarSSL)是一个由 ARM 公司开源和维护的 SSL/TLS 算法库。其使用 C 编程语言以最小的编码占用空间实现了 SSL/TLS 功能及各种加密算法,易于理解、使用、集成和扩展,方便开发人员轻松地在嵌入式产品中使用 SSL/TLS 功能。

mbedtls 软件包是 RT-Thread 基于 ARMmbed/mbedtls 开源库 v2.6.0 版本移植的.

1.1提供功能

mbedTLS** 软件包提供了如下的能力:

  • 完整的 SSL v3TLS v1.0TLS v1.1TLS v1.2 协议实现
  • X.509 证书处理
  • 基于 TCP 的 TLS 传输加密
  • 基于 UDP 的 DTLS(Datagram TLS)传输加密
  • 其它加解密库实现

有关 mbedTLS 的更多信息,请参阅 https://tls.mbed.org

1.2关键框架图

mbedTLS 软件包提供了一组可以单独使用和编译的加密组件,各组件及其可能的依赖关系如下图所示:
在这里插入图片描述

1.3 目录结构

名称说明
certsCA 证书存放目录
docs文档目录
mbedtlsARM mbedtls 源码
ports移植文件目录
samples示例文件目录
LICENSE许可证文件
README.md软件包使用说明
SConscriptRT-Thread 默认的构建脚本

1.4 许可证

Apache License Version 2.0 协议许可。

2、获取软件包

在使用的 BSP 目录下,使用 ENV 工具打开 menuconfig 来获取软件包。

  • 配置软件包并使能示例
RT-Thread online packages --->
    security packages  --->
            Select Root Certificate  --->      # 选择证书文件
        [*] mbedtls: An portable and flexible SSL/TLS library  ---  # 打开 mbedtls 软件包
        [*]   Store the AES tables in ROM      # 将 AES 表存储在 ROM 中,优化内存占用
        (2)   Maximum window size used         # 用于点乘的最大“窗口”大小(2-7,该值越小内存占用也越小)
        (3584) Maxium fragment length in bytes # 配置数据帧大小(0x7200 错误可尝试增加该大小)
        [*]   Enable a mbedtls client example  # 开启 mbedtls 测试例程
        [ ]   Enable Debug log output          # 开启调试 log 输出
              version (latest)  --->           # 选择软件包版本,默认为最新版本

   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 选择证书文件
RT-Thread online packages --->
    security packages  --->
        [*] mbedtls: An portable and flexible SSL/TLS library  ---  # 打开 mbedtls 软件包
                Select Root Certificate  --->                       # 选择证书文件
                    [ ] Using all default CA(Use preset CA certificates. Take up more memory)
                    [ ] Using user CA(copy your Root CA file to mbedtls package "certs" directory)
                    [*] Using Digital Signature Trust Root CA       # 测试例程需要使用的证书

   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
- `Using all default CA` 配置选项会将 `certs/default` 目录下的所有预置证书加入编译,将占用很大的内存
- `Using user CA` 配置选项允许用户将自己需要的证书文件加入编译,需要用户将证书文件拷贝到 `certs` 根目录
- 更多使用说明请参阅 [软件包详细介绍](docs/introduction.md)

   
  • 1
  • 2
  • 3
  • 使用 pkgs --update 命令下载软件包

3、参考资料

  • mbedTLS官方网站:https://tls.mbed.org/
  • ARMmbed GitHub:[mbedtls
非常好的问题!我们来逐条详细解释你提到的几个关键点: --- ### ✅ 1. `3.6.1` 是版本吗? **是的,`3.6.1` 是 Mbed TLS 的一个正式发布版本号。** Mbed TLS(原名 PolarSSL)采用标准的 **语义化版本号(Semantic Versioning)** 格式: `主版本号.次版本号.修订号` → `Major.Minor.Patch` - `3.6.1` 表示: - 主版本:3 - 次版本:6 - 修订版本:1 👉 这是一个稳定发布的版本,可以从 GitHub 官方仓库获取: ```bash git clone https://github.com/Mbed-TLS/mbedtls.git cd mbedtls git checkout mbedtls-3.6.1 # 或者 v3.6.1 ``` 也可以从官网下载源码包:https://github.com/Mbed-TLS/mbedtls/releases/tag/v3.6.1 --- ### ✅ 2. 那 `204`、`201`、`207` 是什么?为什么叫 `204-mbedtls_config.patch`? 这些数字通常是 **补丁编号(Patch Number)**,它们不是 Mbed TLS 官方定义的,而是 **你自己或你的团队/项目内部约定的顺序编号**。 #### 🔹 常见命名方式: ```text NNN-description-of-change.patch ``` 其中: - `NNN`:三位数字编号,如 `201`、`204`、`207` - `description`:简要说明这个 patch 做了什么 #### 🔍 举例分析: ```text 204-mbedtls_config.patch → 第 204 号补丁,修改配置文件以支持 QUIC 201-add-quic-methods.patch → 第 201 号补丁,添加 QUIC 方法结构体 207-fix-tls-extension-order.patch → 第 207 号补丁,修复扩展发送顺序 ``` #### 🧩 编号意义: | 编号范围 | 含义(常见惯例) | |--------|----------------| | 001~099 | 平台适配相关(如 STM32、ESP32) | | 100~199 | 功能启用(如启用 TLS 1.3、PSK) | | 200~299 | 新功能扩展(如 QUIC、CoAP 支持) | | 300~399 | Bug 修复 | | 400~499 | 性能优化 | > 所以 `204` 很可能表示这是“第 204 个补丁”,属于“功能扩展类”中的 QUIC 支持部分。 📌 **注意:这些编号没有强制含义,完全由你们项目的构建系统或导师规定。** --- ### ✅ 3. `diff --git a/include/mbedtls/mbedtls_config.h b/include/mbedtls/mbedtls_config.h` 中的 `a/` 和 `b/` 是什么意思?是我自己的源码吗? 这部分是你看到的 patch 文件开头的内容,它来自 Git 自动生成的差异输出。 #### 🔍 解释: ```diff diff --git a/include/mbedtls/mbedtls_config.h b/include/mbedtls/mbedtls_config.h index bd3f71d..25b8219 100755 --- a/include/mbedtls/mbedtls_config.h +++ b/include/mbedtls/mbedtls_config.h ``` - `a/`:代表“before”(修改前的文件) - `b/`:代表“after”(修改后的文件) 这是 Git 内部使用的符号,并不对应真实路径。 实际你在本地看到的路径就是:`include/mbedtls/mbedtls_config.h` > ⚠️ 你不需要有名为 `a/` 或 `b/` 的目录!这只是 Git diff 的标准格式。 #### 🔄 这个 patch 是谁生成的? - 是有人在某个 Git 仓库中对 **原始 mbedtls v3.6.1 源码**做了修改后,运行了: ```bash git diff > 204-mbedtls_config.patch ``` 或者: ```bash git format-patch -1 HEAD ``` 所以这个 patch 是基于标准 mbedtls 源码生成的,你可以放心应用到你自己的 mbedtls-3.6.1 源码上。 --- ### ✅ 如何验证我用的是正确的源码来打 patch? #### 步骤如下: ```bash # 1. 克隆官方源码 git clone https://github.com/Mbed-TLS/mbedtls.git cd mbedtls # 2. 切换到正确版本 git checkout mbedtls-3.6.1 # 3. 查看当前提交哈希是否匹配 patch 的 base git log --oneline -1 # 输出类似:bd3f71d Support additional platforms in test scripts # 而你的 patch 中 index 行是: # index bd3f71d..25b8219 100755 # ↑↑↑↑↑↑ ← 这个就是基线 commit hash! ``` ✅ 如果你的源码当前最新的 commit 是 `bd3f71d`,那就说明你的源码和 patch 的基础版本一致,可以直接打 patch! ❌ 如果不一致(比如你是 master 分支),就可能导致 patch 失败或出错。 --- ### ✅ 总结:你应该怎么做? #### ✅ 正确流程如下: ```bash # Step 1: 获取正确版本的 mbedtls git clone https://github.com/Mbed-TLS/mbedtls.git cd mbedtls git checkout mbedtls-3.6.1 # 确保是 tag v3.6.1 # Step 2: 应用补丁(假设 patch 文件放在外面) cp ../platform/package/libs/mbedtls/3.6.1_patches/204-mbedtls_config.patch . # Step 3: 打补丁 patch -p1 < 204-mbedtls_config.patch # 如果提示 "missing newline at end of file",编辑 patch 文件末尾加一行空行即可 ``` #### ✅ 验证是否成功: ```bash grep "MBEDTLS_QUIC" include/mbedtls/mbedtls_config.h # 应该输出:#define MBEDTLS_QUIC ``` --- ### 💡 小技巧:如何自己生成兼容的 patch? 当你改完代码后,可以这样生成标准 patch: ```bash git add include/mbedtls/mbedtls_config.h include/mbedtls/ssl.h git commit -m "Add QUIC support for external integration" git format-patch -1 HEAD --output-directory=../platform/package/libs/mbedtls/3.6.1_patches/ ``` 会自动生成类似 `0001-Add-QUIC-support-for-external-integration.patch` 的文件,你可以重命名为 `204-mbedtls_config.patch`。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值