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:始终使用交叉签名证书作为 TLS 的根 CA?

Guru**** 2539500 points


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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1063124/cc3220sf-always-use-cross-signing-certificate-as-root-ca-for-tls

器件型号:CC3220SF

过去几年、我们一直使用 CC3220和 CC3235开发物联网应用。  我们知道在连接到 Amazon AWS IoT 时指定根 CA 证书的问题、因为您必须指定"Starfield"证书、而不是亚马逊提供的"AmazonRootCA1.pim"证书、因为 Starfield 交叉签署了亚马逊证书。  我们还(我们认为)遇到了与 Google GCP IoT 类似的问题、因为他们提供 了一个 LTS 域、其服务器证书保证由两个根 CA 之一签署、 CC3220在连接到 MQTT.200.LTsapis.goog 时无法使用 TLS、并声明它期望使用此处提供的"GlobalSign Root CA"证书:

e2e.ti.com/.../5758.GlobalSign-Root-CA.pem.txt

我怀疑主要证书和次要证书都是由 GlobalSign 证书交叉签署的。

我想我有两个问题:

1) 1)在阅读 此论坛帖子时、我是否正确回答 了连接到 GCP IoT 的另一位用户的问题、即 CC3220不会接受用于 TLS 目的的任意自签名根 CA 证书、除非该证书出现在受信任证书目录中(无论是由 TI 提供还是自定义和自定义签名)?

2)假设您有一个证书链、其中 A (服务器证书)由 B (中间证书)签名、B 由 C (供应商的根 CA 证书)签名、但 C 也由 D (替代/传统根 CA)交叉签名。  我们还假设证书 C 确实出现在证书目录中(可能是因为开发人员创建了自定义目录并在 CC3220中放置了新的目录信任密钥等)。  现在、我们尝试使用 TLS 连接到服务器。  使用 MQTT 客户端时、应用程序必须在"sectionFiles"参数中提供哪个根 CA 证书?  它是证书 C (即它足以显示在目录中)还是证书 D (因为 CC3220坚持将交叉签名证书视为链的真正末端)?  谢谢。

戴维·R.

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

    您的问题答案:

    1) 1)这是线程中提到的、它是真的、但与线程 的问题无关。 问题是为连接选择的根 CA 错误。

    如果选择了正确的根 CA、则仍需要将其包含在证书目录中(或禁用目录验证、请参阅 SL_SO_SECURE_DISABLE_CERTIFICATE_STORE)。

    2)  2)澄清:C 不能是根、也不能由另一个证书签名、因为根必须是自签名的。  因此、C 可以替换为由 D 签名的 C'、否则交叉签名将发生在中间证书中。 在这两种情况下,您都在谈论 一台服务器,该服务器在根证书和节点证书之间有2条或更多的有效路径(链)。

    由于 CC3220每个连接仅支持一个根 CA、并且您的服务器具有不同的链、可能会导致 不同的根 CA、因此您需要在 文件系统中包含两个根证书(希望目录中都包含这两个根证书)、 但如果不是这样、您可以禁用目录验证)并使用其中一个进行连接。  如果 连接失败(错误-468)、您需要尝试使用第二个根证书重新连接。

    BR、

    Kobi