本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
移植网络传输接口
集成 TLS 库
对于传输层安全性 (TLS) 身份验证,请使用您的首选 TLS 堆栈。我们建议使用 Mbed TLS
无论您的设备使用哪种 TLS 实现,您都必须使用 TCP/IP 堆栈实现 TLS 堆栈的底层传输挂钩。它们必须支持支持的 TLS 密码套件Amazon IoT。
移植网络传输接口库
必须实现网络传输接口才能使用 CoreMQTT 和 Co
先决条件
要移植此测试,您需要:
一个带有构建系统的项目,该系统可以使用经过验证的 FreeRTOS 内核端口构建 FreeRTOS。
网络驱动程序的工作实现。
移植
将 Freertos-Libraries-Intestraries-
Integraries-Test作为子模块 子模块在项目中的放置位置并不重要,只要它可以被构建即可。 将
config_template/test_execution_config_template.h
和复制config_template/test_param_config_template.h
到生成路径中的项目位置,然后将其重命名为test_execution_config.h
和test_param_config.h
。将相关文件包含到编译系统中。如果使用
CMake
,src/transport_interface_tests.cmake
则使用qualification_test.cmake
和来包含相关文件。在适当的项目地点实现以下功能:
-
答
network connect function
:签名由NetworkConnectFunc
中定义src/common/network_connection.h
。此函数接受指向网络上下文的指针、指向主机信息的指针和指向网络凭据的指针。它使用提供的网络凭据与主机信息中指定的服务器建立连接。答
network disconnect function
:签名由NetworkDisconnectFunc
中定义src/common/network_connection.h
。此函数接收指向网络上下文的指针。它断开存储在网络环境中的先前建立的连接。setupTransportInterfaceTestParam()
:这是在中定义的src/transport_interface/transport_interface_tests.h
。实现的名称和签名必须与中定义的完全相同transport_interface_tests.h
。此函数接收指向TransportInterfaceTestParam结构的指针。它将填充传输接口测试使用的TransportInterfaceTestParam结构中的字段。
实现 UNITY_OUTPUT_CHAR,这样测试输出日志就不会与设备日志交错。
runQualificationTest()
从应用程序中调用。在呼叫之前,必须正确初始化设备硬件并连接网络。
凭证管理(设备上生成的密钥)
当 FORCE_GENERATE_NEW_KEY_PAI R 中的值设置test_param_config.h
为 1 时,设备应用程序会生成新的设备端key pair 并输出公钥。在与回显服务器建立 TLS 连接时,设备应用程序使用 ECHO_SERVER_ROOT_CA 和 TRANSPORT_CLI ENT_CERTICATE 作为回声服务器根 CA 和客户端证书。IDT 在资格认证运行期间设置这些参数。
凭证管理(导入密钥)
在与 echo 服务器建立 TLS 连接时,设备应用程序使用 ECHO_SERVER _ROOT_ CA、TRANSPORT _CLIENT_CERTICAT E 和 TRANSPORT_CLIENT_KEYtest_param_config.h
作为回声服务器根 CA、客户端证书和客户端私钥。IDT 在资格认证运行期间设置这些参数。
测试
本节介绍如何通过资格测试在本地测试传输接口。或者,也可以使用 IDT 自动执行。有关详细信息 Amazon IoT Device Tester,请参阅 FreeRTO S 用户指南中的 FreeRTOS。
启用测试
打开 TRtest_execution_config.h
ANSPORT _INTERFACE_TEST_ENABLE D 并将其定义为 1
设置 echo 服务器进行测试
本地测试需要可从运行测试的设备访问的 echo 服务器。如果传输接口实现支持 TLS,则回显服务器必须支持 TLS。如果你还没有,那么 FreerTOS-Libraries-Integration-
配置项目以供测试
在中test_param_config.h
,将 ECHO_SERVER_ENDPOINT 和 ECHO_SERVER_POR T 更新到上一步中的端点和服务器设置。
设置凭据(设备上生成的密钥)
将 ECHO_SERVER_ROOT_CA 设置为 echo 服务器的服务器证书。
将 FORCE_GENERATE_NEW_KEY_PAI R 设置为 1 以生成key pair 并获取公钥。
生成密钥后,将 FORCE_GENERATE_NEW_KEY_PAI R 设置回 0。
使用公钥和服务器密钥和证书生成客户端证书。
将 TR ANSPORT_CLIENT_C ERTICATE 设置为生成的客户端
设置凭据(导入密钥)
将 ECHO_SERVER_ROOT_CA 设置为 echo 服务器的服务器证书。
将 TR ANSPORT_CLIENT_C ERTICATE 设置为预生成的客户端证书
将 TR ANSPORT_CLIENT_PR IVATE_KEY 设置为预生成的客户端私钥。
生成并刷新应用程序
使用您选择的工具链构建和刷新应用程序。调runQualificationTest()
用时,传输接口测试将运行。测试结果输出到串行端口。
注意
要使设备正式获得 FreeRTOS 资格,您必须使用 OTA PAL 和 OTA E2E 测试组验证设备移植的源代码Amazon IoT Device Tester。按照 FreeRTOS 用户指南中 FreeRTOS 的使用Amazon IoT Device Tester中的说明Amazon IoT Device Tester进行端口验证设置。要测试特定库的端口,必须在Amazon IoT Device Testerconfigs
文件夹device.json
的文件中启用正确的测试组。