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.

[参考译文] LAUNCHXL-CC3235SF:使用 AT Command 打开安全套接字

Guru**** 2553260 points
Other Parts Discussed in Thread: CC3235SF, UNIFLASH

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1138216/launchxl-cc3235sf-opening-secure-socket-using-at-command

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

各位专家:

向 CX 寻求您对此问题的帮助:

我将 TI 的 AT 命令示例应用与 LAUNCHXL_CC3235SF 搭配使用。 我想打开安全套接字、以便使用 MQTT 协议与远程服务器进行通信。 我将按如下顺序使用以下 AT 命令:

AT+Socket =iNet、STREAM、SEC //返回套接字描述符(通常返回0),OK 作为响应

AT+NetAPPGetHostByName=主机名,iNet //主机名是服务器的名称。 这将返回 OK + netappgetstgyname:

主机名、主机 IP 地址

AT+SetSockOpt =0、socket、SECMETHOD、TLSv1_2 //这将返回 OK 响应

AT+Connect=0、iNet、8883、IPAddress /IP 地址是前一条命令返回的主机 IP 地址。

上述连接命令不会返回任何响应。

如果我在 AT+Socket 命令中使用 TCP 而不是 SEC、则 AT+Connect 命令会返回响应、返回 OK。 但是、如果我打开 TCP 套接字、则它不会接收到任何来自服务器的响应、以响应我的 MQTT 连接数据包。

有人能告诉我在 AT+Socket 命令中使用 SEC 的问题吗? 是我打开插座进行连接的顺序正确

请提供帮助。 谢谢你。

此致、
阿尔基·A.

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

    要使用 TLS 进行连接、您需要(至少)提供服务器的根 CA 证书 (使用  AT+SetSockOpt=[SD]、socket、SECURE_FILES_CA_FILE_NAME、"root-ca-filename")。

    如果要连接到 MQTT 代理、可以参阅"MQTT 客户端命令"一章、并使用 AT+MqttCreate 和 AT+MqttConnect。

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

    您好、Kobi、

    感谢您的评论。 客户体验回应:

    "实际上、我正在尝试连接到 Azure IoT Hub。 我使用的是带 MCU 的定制板、我在其中移植了 azure_IoT_Midnel_for_FreeRTOS。 在 MCU 的 UART 端口上、我连接了在 Command 应用中执行的 CC3235SF 板。 用于 FreeRTOS 的 Azure IoT 中间件使用具有核心 MQTT 协议层的物联网嵌入式 C SDK。 我在 MQTT 协议层中实施了套接字包装器、以通过 UART 端口将数据包从 MQTT 层传输到 CC3235SF。
    我已经尝试使用 simple_http_。 CC3235SF_Launchpad 板示例。 我可以使用此示例连接到服务器、但我们还需要设备配对和 DPS 功能。 因此、我们在 MCU 端移植了 Azure IoT。

    我在 MCU 端具有阵列形式的根 CA 证书文件。 此文件是否应位于 CC3235SF 板上? 如果是、您能否指导您如何在 atCommand 应用中包含相同的内容?"

    谢谢你。

    此致、
    阿尔基·A.

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

    您可以使用 AT+Command File 系统命令( https://www.ti.com/lit/pdf/swru534中的第6.4章)将证书文件写入 CC3235文件系统、然后使用  AT+SetSockOpt 命令使用文件路径)。

    为什么不在 CC3220 MCU 上使用 Azure 软件并创建与外部 MCU 的简单通信协议(它可以基于修改后的 AT+CMD)?

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

    您好 Kobi、

    谢谢你。 客户有以下跟进措施:

    "我拥有 Microsoft 的 azure_IoT_Middleware_FreeRTOS 源代码中提供的 C 数组格式的证书。 我必须找到一种通过 AT 命令传输此数据的方法、以便文件系统在 CC3235中加载这些证书数据。 有什么建议吗?
    我有一些基本问题:
    我能否使用 Uniflash 工具将这些证书数据加载到 CC3235SF 闪存中? 我看到了一些高级选项,但不确定如何同时指定证书文件的路径。
    如果我可以使用 Uniflash 工具加载、那么我如何知道需要指定为打开安全套接字选项的文件路径?
    如果我为文件系统加载使用 AT 命令、那么它是否会进入 RAM 存储器的闪存?

    您关于通过 CC3235 MCU 使用 Azure 软件的建议是绝对正确的。 但是、我们的器件可以选择使用其他网络模块(除 WIFI 之外)连接到物联网集线器。 在这种情况下、我们需要再次在该模块上移植 Azure 软件。"

    此致、
    阿尔基·A.

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

    AT FS 命令将转到 CC3235闪存(就像从 uniflash 写入一样)。

    有关添加用户文件的说明、请参阅以下 uniflash-cc3235文档: https://www.ti.com/lit/swru469 

    关于设计-当然、这是客户的决定、但使用 AT_Commands 并不能充分利用 CC3235 MCU。 如果有其他网络接口、则可以 从 CC3235 MCU 访问它们。 我知道可能需要 N/W 堆栈等、但这也可以从主 MCU 中卸载。   

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

    HELO Kobi、

    感谢您的回答。

    客户 了解 他们选择使用 AT Commands 应用程序、并将在发布前进行正确测试。

    我们将等待您对 AT+Connect 命令的响应、返回-468错误代码、这意味着它"已连接、但用于验证对等设备的根 CA 未知"。

    此致、
    阿尔基·A.

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

    -468是一条可以忽略的警告、

    连接已打开,但服务器的根 CA 不是证书目录的一部分(可能是因为客户正在使用“虚拟”游乐场目录)。  

    选项包括(1)忽略警告、(2)禁用目录验证(通过 setsockopt)或(3)使用包含根 CA 的目录(TI "生产"目录或特定于供应商的目录、请参阅 https://www.ti.com/lit/pdf/swru547)。

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

    您好、Kobi、

    谢谢你。 客户体验回应:

    -468错误-是的、我正在使用运动场目录。
    我致力于您提供的选择:
    1.忽略警告:发送 MQTT 连接数据包后、我从服务器接收 ACK 字节、前2个字节正确、后2个字节不正确。 前2个字节- 0x20和0x02。 接下来的2个字节:0x18 & 0xF0。 不确定 TI 团队是否可以在这里提供一些信息。
    2.禁用目录验证:使用 AT Command - AT+SetSockOpt,我在套接字选项中看不到任何选项来禁用 AT Command 文档中的目录验证。 您能指出具体的选项吗?
    3.使用 TI 生产目录:我不确定您是否在使用 simplelink SDK 中的目录文件夹。 我可以在 SDK 中查看 certcatalog20190217.lst 和 certcatalog20190217.lst.signed_3235.bin。 您也在引用这些文件吗? 如果是、那么我已经尝试刷写它们、但它会像附加的映像中那样提供闪存错误。

    问题:如果我在 CC3235SF 用户文件部分中刷写了一些文件、如何删除它?

    此致、
    阿尔基·A.

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

    关于1、不确定我们可以提供帮助-您使用的是什么 MQTT 堆栈?

    对于2、可能不支持通过 AT CMD、您可以将其添加到 AT 驱动程序中、或者忽略-468。

    关于3、是的、我指 的是 certcatalog20190217.lst

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

    您好 Kobi、

    感谢您的回答。

    1.我使用的是 FreeRTOS Azure IoT 中间件随附的 coreMQTT
    2.好的
    3. certcatalog20190217.lst 在闪烁时给我提供错误。 请参阅我的附件、并附上上一条消息。 您能帮我解决这个问题吗?

    问题:如果我在 CC3235SF 用户文件部分中刷写了一些文件、如何删除它?

    此致、
    阿尔基·A.

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

    使用  certcatalog20190217时-不能使用 Playground 证书进行编程。 您将需要使用一个包含在目录中的根 CA 的有效证书(请检查目录文件夹中的自述文件以查找支持的根)。 您仍需要包含有效根 CA 的整个证书才能存储在闪存中。

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

    您是否尝试使用内部 MQTT 堆栈(通过 AT MQTT 客户端命令)?

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

    感谢 Kobi 提供的信息。

    CX 共享:

    我参考了自述文件、发现 certcatalog20190217包括"Baltimore CyberTrust Root"根 CA。 因此、我从 Microsoft Azure Weblink 下载了该根 CA、并刷写了相同的内容。 尽管如此、我仍获得 FS_ERR_ROOT_CA_IS _unkown。 这是否意味着我从 Microsoft Azure Weblink 下载的根 CA 不正确?
    除了根 CA 之外、我还需要任何特定于器件的证书来连接物联网集线器服务器吗? 如果是、我们是否必须购买它? 我是 TI 的推荐证书处理文档、因此提出了这个问题。

    我尚未尝试内部 MQTT 堆栈。 我也会尝试这种方法。

    此致、
    阿尔基·A.

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

     在对器件进行编程或尝试连接到 Azure 时、您是否获得了 FS_ERR_ROOT_CA_IS _unkown?

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

    您好、Kobi、

    你好。 CX 确认他们遇到了该错误。

    让您知道如何继续。 谢谢你。

    此致、
    阿尔基·A.

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

    我的问题是何时。 在编程期间还是 TLS 连接期间?

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

    您好 Kobi、

    CX 刚刚确认 、他们 在使用 UNIFLASH 工具在闪存中进行编程时收到此错误。

    此致、
    阿尔基·A.

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

    这意味着他正在使用目录中未包含的根证书、这将不起作用、

    他将使用 Playground 目录和 Playground 证书(只要这只是用于开发)、或者 使用从 已知证书颁发机构购买的证书(其中包含根目录)的 certcatalog20190217。

    另 一个选项是使用供应商目录-请参阅 https://www.ti.com/lit/pdf/swru547

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

    您好、Kobi、

    客户 刚回应时、对延迟回复表示歉意。

    1.是否有办法在不购买证书的情况下使用 certcatalog20190217? 我们能否根据 certcatalog20190217中的已知根 CA 生成一些有效期较短的器件证书。 这仅用于测试目的。

    2.为什么供应商目录与 OTP 编程相关?

    谢谢你。

    73、
    阿尔基·A.

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

    1.不可以, 您必须具有有效的证书(由已知 CA 签名)才能对代码进行签名。

    2.为了验证供应商目录,您需要安装信任根(用于验证目录的根证书)。 与供应商的私钥相对应)、无法更改- OTP 用于安装此类根证书(TI 的目录基于 ROM 中的信任根)