This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC3551E:HTTPS 客户端实现的推荐架构

Guru**** 2796425 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1620913/cc3551e-recommended-architecture-for-https-client-implementation

器件型号: CC3551E

尊敬的团队:

我使用的是 CC3551、其中使用了 SimpleLink Wi-Fi SDK 9.21 (GA) 和 AT-Commands 示例。

我需要说明在此 SDK 中实现 HTTPS 客户端的建议架构、以及是否提供了任何参考示例。

我知道 SDK 将 mbedTLS 集成到自定义配置中。 在继续下去之前、我希望确认官方支持的做法。

请您澄清一下:

在 SDK 9.21 中、HTTPS 客户端实施的建议方法是什么:

lwIP 原始 API + ALTCP TLS

或 lwIP BSD 套接字+直接 mbedTLS API?

是否有适用于 CC3551 的官方 HTTPS 客户端示例(非 MQTT)?

请确认支持量产的推荐方法。

谢谢你。

此致、
Vignesh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    目前、SDK 中没有 HTTPS(或 HTTP)示例。

    由于我略微参与了 LwIP 中的实现、因此出于多种原因、我不建议使用 LwIP 内部 HTTP 服务器。

    • 它只具有服务器身份验证、而不具有客户端身份验证
    • 我觉得 CGI 和 SSI 支持不是那么简单
    • HTTP 页面是静态的、CGI/SSI 不会使其感觉是动态的
    • 使用 altcp_tls_mbedtls 层会使 LwIP 和 mbedTLS 在捆绑包中工作、并且由于 mbedTLS 始终会升级且 LwIP 不会太频繁、因此在尝试编译时会产生不匹配

    我建议在开放的套接字上使用 mbedTLS、然后您将具有完全的灵活性。

    任何 HTTPS 实施都可能有效。

    此致、

    Shlomi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Shlomi:

    感谢您的澄清。

    根据您的建议、我在**AT-Commands 示例项目**(SDK 9.22.00.15) 中使用带有 mbedTLS 的**lwIP BSD 套接字实现了 HTTPS 客户端。

    该器件成功:

    *连接到 Wi-Fi
    *获取 IP 地址
    *解析 DNS
    *建立到 HTTPS 服务器的 TCP 连接

    但是、问题发生在** TLS 握手**期间。 驱动程序开始报告内存分配错误、如下所示:


    HTTPS 之前的可用堆:44488 字节
    TCP CONNECTED
    TLS 握手...

    错误! DRV_handleRxMngPacket:pie_addr_table 分配失败

    在 TLS 握手期间、可用堆似乎会显著下降、并且 Wi-Fi 驱动程序无法分配内部缓冲区。

    请告知:

    1.是否有**建议的堆/栈配置**用于在 CC3551 上运行 mbedTLS HTTPS?
    2.是否有任何** mbedTLS 配置参数(例如 SSL 缓冲区大小)**应针对此设备进行调整?
    3.是否有建议的方法将 HTTPS 与**AT-Commands Example**集成以避免此类内存问题?

    请提供任何指导。

    此致、
    Vignesh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    此时、我唯一可以提供的建议是增加堆大小、因为可能是由于以下原因、在握手期间需要存储的数据量很大:

    • 证书链
    • 存储整个握手所需的 TLS 重新协商或 EMS 功能
    • 等等

    您可以通过 FreeRTOS 部分下的 syscfg 轻松执行此操作。

    我还建议增加主任务的栈大小、因为 mbedtls 的上下文与主任务相同。

    您可以在 main_freertos.c 的顶部找到它、即 THREADSTACKSIZE。

    此致、

    Shlomi