ZHCACY3 august   2023 AM2431 , AM2432 , AM2434 , AM2631 , AM2631-Q1 , AM2632 , AM2632-Q1 , AM2634 , AM2634-Q1 , AM263P4 , AM2732 , AM2732-Q1 , AM6411 , AM6412 , AM6421 , AM6422 , AM6441 , AM6442

 

  1.   1
  2.   摘要
  3.   商标
  4. 1引言
    1. 1.1 本文档中使用的首字母缩写词
  5. 2MbedTLS
    1. 2.1 MbedTLS 是什么?
    2. 2.2 为何选择 MbedTLS?
    3. 2.3 MbedTLS 的应用
  6. 3在 Lwip 上使用 MbedTLS
    1. 3.1 TLS 服务器示例(HTTPS 服务器)
    2. 3.2 TLS 客户端示例(MQTT 客户端)

TLS 服务器示例(HTTPS 服务器)

该示例演示了 AM2x 器件用作 HTTPS 服务器的情形,该服务器接受客户端连接并发回固定响应。在此示例中,MbedTLS 与 LwIP 搭配使用,来实现完整的功能。

下面介绍了 HTTPS 服务器的顶层工作方式:

MbedTLS 的作用:

  • 创建使用服务器证书、私钥、私钥访问密码(可选)的 TLS 配置。标准分配器函数为 TLS over TCP 创建 altcp PCB。
  • 加载证书和私钥。然后基于 x509 证书(DER 或 PEM)的格式解析证书和密钥。
  • 将私钥的模数与证书中公钥的模数进行比较。使用可信 CA 的私钥对证书进行签名。
  • 使用公钥来验证上述签名。如果验证完成,则执行后续步骤。
  • 将 TLS 配置传递给 LwIP 应用 API,这些 API 在 PCB(相应 TCP 连接的进程控制块)内部使用相同的 TLS 配置。
  • 使用 mbedTLS 加密函数验证证书和密钥。如果发生任何解析错误或数据不一致,则表示证书和密钥无效,正在进行的网络连接将被断开。

LwIP 的作用:

  • 设置 LwIP PCB,然后将该 PCB 绑定到定义的端口(采用 HTTPS 时为 8080)。然后,PCB 将连接绑定到本地端口号和 IP 地址,本例中由 DHCP 服务器获得这些信息。
  • 然后,将 TCP 连接的状态设置为 LISTEN(用于接受新连接的模式)。
  • 设置 altcp_accept 回调,用于处理新的传入连接、分配内存来管理连接状态,以及设置用于发送、接收、错误处理和轮询的回调。
  • http_recv 回调在获得数据时通知 TCP PCB 已接收到数,然后解析数据。
  • http_poll 回调每 2 秒轮询一次连接的另一端,如果 8 秒内没有接收到数据,连接就会关闭。
  • 在出现错误时,http_err 回调关闭连接并释放资源。
  • http_sent 回调函数负责发送数据并从远程主机获取确认。

图 3-2 展示了使用 SA2UL 加密加速器进行加密(可选)时的相同用例。另一种选择是使用 MbedTLS 软件加密技术,而不是将其卸载到硬件上。

GUID-FF897D7E-CF44-432F-A086-6F88234FFD1F-low.png图 3-2 HTTPS 服务器示例的端到端工作方式概述

有关更多详细信息,请参阅:AM243x MCU+ SDK: CPSW Lwip HTTPS 服务器示例