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.

[参考译文] CC3220SF-LAUNCHXL:Azure IoT Edge Connection 问题

Guru**** 2553450 points
Other Parts Discussed in Thread: CC3220SF

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/886796/cc3220sf-launchxl-azure-iot-edge-connection-issue

器件型号:CC3220SF-LAUNCHXL
主题中讨论的其他器件:CC3220SF

您好!

我正在尝试获取 CC3220SF azure MQTT 示例以连接到我的本地物联网边缘实例、而不是物联网集线器。 我创建了(自签名)证书并将其安装在物联网边缘、并确认它可以与 Linux 上的 c-SDK 配合使用。

但是、将证书和连接字符串复制到 cc3220sf 设备不起作用、并导致此日志:

[Cortex_M4_0]启动 iiohub_client_sample_mqTT 示例
当前时间 :2020年3月8日01:51:47

CC32XX 已连接到 AP 并获取 IP 地址。
IP 地址:192.168.0.106
正在刷新证书文件...已成功将文件/cert/ms.pem 写入闪存
IoTHubClient_LL_SetMessageCallback...成功。
IoTHubClient_LL_SendEventAsync 接受的消息[0]用于传输到物联网集线器。
错误:时间:Sun Mar 8 01:51:52 2020文件:../../pal/src/tlsio_sl.c Func:tlsio_sl_open Line:371 SlNetSock_startSec 无法启动会话

错误:时间:Sun Mar 8 01:51:52 2020文件:../../sdk/iothub_client/src/iothubtransport_mqtt_common.c Func:SendMqttConnectMsg Line: 2262连接到 iotedge.*****失败 网络。
错误:时间:Sun Mar 8 01:51:55 2020文件:../../pal/src/tlsio_sl.c Func:tlsio_sl_open Line:371 SlNetSock_startSec 无法启动会话

错误:时间:Sun Mar 8 01:51:55 2020文件:../../sdk/iothub_client/src/iothubtransport_mqtt_common.c Func:SendMqttConnectMsg Line: 2262连接到 iotedge.*****失败 网络。
错误:时间:Sun Mar 8 01:51:58 2020文件:../../pal/src/tlsio_sl.c Func:tlsio_sl_open Line:371 SlNetSock_startSec 无法启动会话

错误:时间:Sun Mar 8 01:51:58 2020文件:../../sdk/iothub_client/src/iothubtransport_mqtt_common.c Func:SendMqttConnectMsg Line: 2262连接到 iotedge.*****失败 网络。

尽管我要覆盖证书文件、但我猜这与我的自签名证书有关。 如何解决此问题?

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

    您好!

    您如何在 CC3220上刷写证书?

    您能否发布用于设置证书的代码? 我对 您致电 IoTHubDeviceClient_LL_setOption()特别感兴趣。

    谢谢、
    Gerardo

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

    当然、我只在示例中的现有代码的顶部添加了此行:

               IoTHubDeviceClient_LL_setOption (iotHubClientHandle、option_trusted_CERT、
                                               边缘证书);

    它就在 IoTHubClient_LL_CreateFromConnectionString 成功返回后。 我在那里添加了它、因为 C-SDK 示例就是这样做的。

    边缘证书定义为:


    const char *边缘_certificates ="-" 开始证书-- \n\
    MIIFRTCCAy2gAwIBAgIULiFskyCDTsIZtcDLzrkBdkrgabAwDQYKoZIhvcNAQEL\n\
    BQAwKjEoMCYGA1UEAwwfQXp1cmUgSW9UIEh1YBDQSBDZJ0IFRlc3QgT25seTAe\n\
    fw0yMDAzMDgwMTE4MzZaFw0yMDA0MDMDcwMTE4MzZaMCoxKDAmBgNVBAMMH0F6dXJl\n\
    IElvVCBIdWIgQ0eQ2VydCBUZXN0IE9ubHkwggIiMA0GCSqGSIb3DQEBAQUAA4IC\n\
    DwAwggIKAoICAQC3vPf8VtAyvGMjL1KWhJYlBf5FxGZi7ZSwLV+Bq2pS3Ie93ShK\n\
    ed36aUoXjqEsjH30egMsSg9u9wDR/WOe7aEIzXT81QYmPwLH9aUoHl+i1MlTpyGl\n\
    S6kMAc+rluqYtm2osv45spZ9vGLjQuwRO8EZoo96d7f1IN4qB5+dlarGy8k5XmPk\n\
    hOMZpvdFIspdUk097BwAHKhZ19wwdTsyrfV8Ed6iItWQ2yGgLQcg1vt5Stu\n\
    Voxli38q24rz3A9AN/8m33JhKODikmdXy7wu7NyETn8yv9TF15KB ofiHJ94sq41\n\
    QpSuESaKDjrHWwS35Rwfuw3Dbv0Sj8JU8KUC+HGbY+7edAIxlnbgUfl2+XAMGaT\n\
    c100hlpCyVPiorv3aKyL9ULtk3T2K6szZj2yJETOBQaJGubZXL+8X1l1pvA5tf+k\n\
    1iB8B9JiGNShBVQ99PNCZvwwbD298sIHVBf1kW80lY/Bl6fc0Gm2Bd3VZcEFvM4e\n\
    9bYSA2bfUES7PCJyDqU0daqRg3ix9N4e+NcHnX6MLqR0vHZCS1lz0Qnaw4mYWh8G\n\
    kOtWqbClNktQ1Cfb/yBgO+7t2j2LXFQq/Z3WDas5gjoOCpQq1kq9MP28DCZ7fGye \n\
    AgcBfbIiQw8bfdaLbVVDsQTbt2c/VjrYUsLguW9GGfqikBEd7Mor6WNihQIDAQAB\n\
    o2MwYTAdBgNVHQ4EFgQUp+YZLp1AiUP6/TTg/Hck4oQ9PwwYDVR0jBBgwFOAU\n\
    P+YZLp1AIUP6/TTg/Hck4oiQ9PwwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E\n\
    BAMCAYYwDQYJKoZIhvcNAQELBQADggIBACATOPBTonwCR3vHE23c/KBuAYLf9vdC\n\
    X87EoaFtxSUaKxrxR/xmdjXfwU7CD4SOMuofkZIMAxOgibICb3hInnz0Nf+L7sYN\n\
    14+QgvjzhRwxzOzCvGcs8JY3xGBAq+FZ9Y+eCXzJuxz0gAU0xPMODAY9kghQVwLl\n\
    A614g+NCRMsyLjTAEaIXRHtPKseSJvpFtEHP/scGQ8GKhBGIYCwLI87wcIcnYeF\n\
    Dosaz0X8N/c85K8djBYeLco/uRcMM/GbhylEsgudMpqJukggzKxs7VNrdwId1xSc\n\
    aCziyFpnA9yEZfDxNusLOctvZxRUMx0UHlqkFQAjyDdBUoZNsO3DrwIQI7hn5CQ+\n\
    A3lXuzVLSB1ataV10KHNivlpeVHImrS4kKzBtvy4D7JNK0J1SCrYHPKea051+5\n\
    iugjQUg2rV3MaaQGJPj1S60fGVqGf7+xfX9lD1do/+e2LTlUnoXxtNfSx+gry1\n\
    uIKzLQmALLY8S1GPpGkChmYoY6OESnrNybd2apXqY4uqpsPeAI1pfyv4x3czOsyU\n\
    Ht4LkMC3Yr3fTUgmsQEGZu0/is8oYiIbHFxlBNPSK3YTs308Fe4lRusKx1kl4Q/W\n\
    0e5RnkhaU+j5xvXy6rebKcT9LUctB/d4MPi87pJfSPNOBNwC4lbDRVVKm62+z9o\n\
    u7Q27aQEhz/T\n\
    ---- 结束证书-- ";

    我还在 certs.c 中放置了相同的证书、并在 main_freertos.c 中启用了 overwriteCerts

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

    在我们的平台上,当使用 IoTHubDeviceClient_LL_setOption()时,我们期望值是保存证书而不是证书本身的目录。 这样就可以在 CC32XX 的安全文件系统上刷写证书。

    此外、在我们的平台上、我们使用 certs_sl.h 中"sl_SSL_CA_CERT"所包含位置中的证书、该证书默认为 "/cert/ms.pem "。 如果查看示例的 main_freertos.c、该示例将把 certs.c 中包含的证书刷写到该位置。 因此、要解决您的问题、请执行以下操作:

    • 摆脱对  IoTHubDeviceClient_LL_setOption (iotHubClientHandle、option_trusted_CERT、EDGE_certificates)的调用;
    • 将 certs.c 中的 certifications[]值替换为新证书。
    • 保持启用写覆盖证书

    这应该可以解决您看到的问题。

    此致、
    Gerardo

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

    您好 Gerardo、

    感谢您的回复! 我这么做了、但我仍然得到完全相同的误差。 我得到了一个干净的建筑以防万一,但没有帮助。 是否有其他可能导致问题的原因?

    最棒的

    Fatih

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

    您好、我们相信、

    我注意到您上面发布的证书格式不正确、这可能会导致连接问题。 请确保您的证书的格式与 certs.c 中的证书类似、在每行末尾添加"\r\n"非常重要。 它应如下所示:

    const char certificates []=
    /* DigiCert Baltimore Root */
    "--- 开始证书-- \r\n"MIIIFRTCCAy2gAwIBAgIULiFskyCDTsitzrtcDLzrkBdkrgabAwDQYJKoZIhvcNAQEL\r\n"BQAwKjEoMCYGA1UEAwwfQXp1cmUgSW9UIEH1BQZQ0BQZQEQZQEQEQEQE0BQEQZQEQEQEQE0YEQEQEQEQE0UQEQEQEQEQEQEQEQ
    
    
    
    "u7Q27aQEhz/T\r\n"
    "-" 结束证书-- \r\n"; 

    谢谢、
    Gerardo

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

    您好 Gerardo、

    再次感谢您的回复、但这也没有解决问题、我仍然遇到相同的错误。

    我还可以尝试其他什么吗?

    最棒的

    Fatih

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

    您好、我们相信、

    您能否在 对 tlsio_sl.c Func:tlsio_sl_open Line:371中的 SlNetSock_startSec ()的调用之后放置一个断点、并查看返回的状态代码的值是什么?

    谢谢、
    Gerardo

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

    您好 Gerardo、

    我无法在此处放置断点、因为出于某种原因、IDE 未找到该文件。 我将所有库都切换为 Debug、但仍然没有机会。 这种情况变得非常令人沮丧。

    最棒的
    Fatih

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

    您好、我们相信、

    在 IDE 上、当它无法找到文件时、它是否为您提供了查找文件的选项? 您应该能够在以下位置找到它:

    /source/third_party/azure-iot-pal-simplelink/pal/src

    如果这不起作用,我们可以在该文件中添加一条 logging 语句( /source/third_party/azure-iot-pal-simplelink/pal/src/tlsio_sl.c),从 SlNetSock_startSec ()中打印返回的状态。 要执行此操作、请打开文件并在第370行修改:

    如果(状态< 0){
    LogError ("SlNetSock_startSec 无法启动会话\n");
    错误= true;
    转至清理
    ;} 

    至:

    如果(状态< 0){
    LogError ("SlNetSock_startSec 无法启动会话(%d)\n"、状态);
    错误= true;
    转至清理
    ;} 

    并按照 从 Azure CC32XX 快速入门指南构建 Azure PAL 和 SDK 库的说明进行操作。

    谢谢、
    Gerardo