示例程序
该示例程序提供了一个简单的 TLS client,与测试网站建立 TLS 连接并获取加密数据。
示例文件
例程工作流程
本例程使用了 TLS 测试网站 www.howsmyssl.com,使用 mbedtls_client_write 函数发送 HTTP 测试请求,成功后,该网站会返回一段加密数据,测试例程将解析后的数据输出到控制台。
例程使用的 HTTP 请求数据如下所示`
mbedTLS 测试例程的基本工作流程如下所示
- client连接外网 TLS 测试网站 www.howsmyssl.com
- client 和 server 握手成功
- client 发送请求
- server 回应请求
- TLS 测试成功/失败## 准备工作
获取软件包
打开 RT-Thread 提供的 ENV 工具,使用 menuconfig 配置软件包。
启用 mbedtls 软件包,并配置使能测试例程(Enable a mbedtls client example),如下所示:
SSL/TLS 服务器进行证书校验的过程中,会对当前发起校验请求的时间进行认证,如果时间不满足服务器的要求,就会校验证书失败。因此,我们需要为设备同步本地时间。
未同步过时间的设备输入 date 命令后如下所示:
shell
msh />date
Thu Jan 1 00:00:06 1970
使用 date 设置当前时间,如下所示:
shell
msh />date 2018 08 02 12 23 00
msh />date
Thu Aug 2 12:23:01 2018
msh />
该方式需要依赖 NTP 工具包,使用 menuconfig 配置获取,如下所示:
shell
RT-Thread online packages —->
IoT - internet of things —->
-- netutils: Networking utilities for RT-Thread —->
-- Enable NTP(Network Time Protocol) client
(8) Timezone for calculate local time
(cn.ntp.org.cn) NTP server name
使用命令 ntp_sync 同步网络时间
shell
msh />ntp_sync
Get local time from NTP server: Thu Aug 2 14:31:30 2018
The system time is updated. Timezone is 8.
msh />date
Thu Aug 2 14:31:34 2018
启动例程
在 MSH 中使用命令 tls_test 执行示例程序,成功建立 TLS 连接后,设备会从服务器拿到一组密码套件,设备 log 如下所示:
原作者:RT-Thread软件包手册
|