主题中讨论的其他器件:CC3220SF、 UNIFLASH
工具/软件:Code Composer Studio
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.
工具/软件:Code Composer Studio
-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错误。
因此、我尝试使用 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