【发布时间】:2020-07-20 14:51:00
【问题描述】:
我制作了 stm32 + rtos + lwip/mqtt 解决方案,效果很好。现在我想将它与嵌入 tls 安全连接一起使用。我没有找到任何例子。
lwip mqtt api 支持 tls 通信。但是没有这样的例子,只是简单的mqtt客户端使用代码LWIP MQTT Client我用的。
我尝试在 cubemx、LWIP_ALTCP 和 LWIP_ALTCP_TLS 中启用 embedtls 和一些选项,将 LWIP_ALTCP_TLS_MBEDTLS 添加到 Path。它编译。 如何初始化 mbedtls 并添加 tls 证书。这个链接需要一点信息altcp tls
有人对 stm32 lwip/mqtt + tls (mbedtls) 的 stm32 lwip 堆栈有一些经验或工作示例吗?
UPD。 这是我的 mqtt 客户端设置代码:
struct mqtt_connect_client_info_t ci;
memset(&ci, 0, sizeof(ci));
ci.client_id = "lwip_test";
ci.client_user = "";
ci.client_pass = "";
ci.keep_alive = 0;
ci.tls_config = altcp_tls_create_config_client((const u8_t*)test_cert, sizeof(test_cert));
// create client
client = mqtt_client_new();
// connect client
mqtt_client_connect(client, &resolved, port, mqtt_on_connect, (void *)0, &ci);
我给mqtt客户端ca证书和长度。我有一个错误 altcp_tls_create_config_client_common 函数 (altcp_tls_mbedtls.c),代码为 -4480(分配内存失败)。
ret = mbedtls_x509_crt_parse(conf->ca, ca, ca_len);
if (ret != 0) {
LWIP_DEBUGF(ALTCP_MBEDTLS_DEBUG, ("mbedtls_x509_crt_parse ca failed: %d 0x%x", ret, -1*ret));
altcp_mbedtls_free_config(conf);
return NULL;
}
我做错了什么,我应该在 mbedtls 模块中设置哪些选项? 我使用默认是由 CubeMX 生成的
【问题讨论】:
标签: ssl mqtt stm32 freertos lwip