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.

[参考译文] CCS/CC3220SF-LAUNCHXL:向 Microsoft 自定义地址发送 HTTP GET 请求

Guru**** 2540720 points
Other Parts Discussed in Thread: CC3220SF, UNIFLASH

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/948791/ccs-cc3220sf-launchxl-http-get-request-to-microsoft-custom-address

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

工具/软件:Code Composer Studio

我正在尝试使用 CC3220SF 开发板向 Microsoft 的地址发送 HTTP GET 请求。 地址为:
我设置了 Microsoft 的 Power Automate 程序、以便在向此 URL 发送 HTTP GET 请求时、我可以收到电子邮件。 我通过将地址放入我的 Web 浏览器进行了测试、它可以正常工作。 我正在使用 SDK 中的 HTTP GET 示例。 我测试了该示例、它可以与 www.example.com 配合使用。 问题是、当我尝试通过更改 HOSTNAME 的宏来连接到 URL 的主机服务器时、我收到错误代码-2006。 我已经尝试将"prod-112.westus.logic.azure.com 作为主机名和许多变体。 是否有办法找到合适的 HOSTNAME?

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

    -2006表示 sl_RET_CODE_INVALID_INPUT (请参阅 simplelink/errors.h)。

    您是否仅更新 HOSTNAME?  

    Azure 应该是安全服务器、因此在调用 connect 时可能需要使用 HttpClient_extSecParams (HttpClient_extSecParams 应至少包含服务器的根 CA、但可能需要设备证书和私钥-所有这些都需要安装在文件系统上)。

    #defineHOSTNAME"prod-112.westus.logic.azure.com

    BR、

    Kobi

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

    感谢您的回答! 我正在尝试使用游乐场 CA 和私钥。 不过、我不确定我是否会这样做。 我将文件  dummy-root-ca-cert 和  dummy-root-ca-ccert-key 复制到我的 CCS 工程中。 然后、我创建了 HttpClient_extSecParams 对象、并将字符串字面量"dummy-root-ca-cert"分配给 RootCA 属性、并将"dummy-root-ca-cert-key"分配给  privateKey 属性。 我不确定 如何使用 clientCert。 将其传递到连接函数后、我得到-111错误。  

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

    虚拟证书不能用于云服务器(它们不是由有效的根 CA 签名)。 它们仅供开发使用、可在实施服务器和客户端(或签署安全文件以便在开发映像上进行编程)时使用。

    BR、

    Kobi

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

    因此、我尝试使用 OpenSSL 生成 CSR 和私钥、如下所示:

    我使用了以下命令:

    OpenSSL req -newkey RSA:2048 -SHA256 -nodes -keoutout.key -out.csr

    我有一个名为 out.csr 的文件和一个名为 out.key 的文件。 我将这些内容提供给 UNIFLASH "签名文件"工具、并获得名为 out.csr.base64.sig 的文件。

    我将该文件作为 clientCert 属性放入。 我输入"out.key"作为 privateKey 属性。 我不知道 RootCA 会出现什么情况、但当我尝试使用"out.csr"时、我在尝试连接到服务器时会遇到相同的-111错误。  我需要为 RootCA 传递什么内容? 我是否完全走错了路?  

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

    CSR 不能在 TLS/SSL 会话中使用。

    CSR (证书签名请求)是您应向证书颁发机构公司提供的文件、以便它为您签署证书。 此类签名将使用其已知的根 CA 来完成、该根 CA 可由云服务器进行验证(而不是自签名且在 SimpleLink 开发环境之外无法识别的游乐场证书)。  

    CSR 包含您的公共密钥和公司详细信息、这些信息将显示在证书上。 当您获得签名证书时、您将能够使用您的私钥(通过开放式 SSL 生成的私钥、就像您所做的那样)。 或 CC32xx 器件上唯一 的-可使用 sl_NetUtil 命令读取)以对内容进行签名并提供用于验证身份的证书。

    TI 证书目录本身包含~100个常用的根 CA 证书、可用于验证签名(可在中找到一个列表 /tools/cc32xx_tools/certificate-catalog/readme.html)。 云服务器将具有类似的列表。 Azure 可能对其接受的根 CA 有特定要求。

    BR、

    Kobi

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

    感谢您的讲解。 我开始把我的想法绕过它。 因此、我找到了 Azure 使用的最常见 CA (Baltimore CyberTrust Root)、它是 TI 证书目录中列出的 CA 之一。 我从那里的网站下载了根 CA 证书、并获得了一个名为"BaltimoreCyberTrustRoot.cert"的文件、我将其作为  RootCA 属性放置。 我仍然拥有 OpenSSL 生成的私钥。 要获取客户端证书、我的设备应像您的浏览器那样向根 CA 服务器提供私钥和 CSR、对吧? 是否有一种使用 API 实现这一目的的简单方法? 我每次都要连接到相同的 URL、因此我甚至可以在运行前进行连接?  

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

    您不应泄露您的私钥或将其发送给任何人。

    连接到安全服务器始终需要服务器身份验证、因此必须安装服务器(Azure)根 CA 作为 RootCA 属性。

    我假设需要"BaltimoreCyberTrustRoot"连接到 Azure。

    大多数云服务器还需要客户端身份验证。 在这种情况下、您将需要私钥和客户端证书(同时在套接字选项中设置)。 NWP 将在内部使用私钥对要发送到服务器的数据包进行签名(密钥本身从未发送)。 证书将作为 TLS 协商的一部分发送、因此云服务器将能够验证您的身份。

    您应根据 CSR 创建客户端证书。 您可以从已知的根 CA (例如"BaltimoreCyberTrustRoot"的所有者 DigiCert)购买客户端证书、但我假设您可以对客户端证书使用其他根 CA)。 您需要提供 CSR 作为客户证书 购买的一部分。 您将获得的证书(链)将使服务器能够验证您的身份。

    某些云服务器将在某些注册过程中为您创建证书(这也需要提供 CSR)、无需单独购买。  

    有关配置到 Azure 服务器的培训、请参阅以下内容。

    https://dev.ti.com/tirex/explore/node?node=AJ9nHaAsEsae1pf9GfFizw__fc2e6sr__LATEST

    BR、

    Kobi