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:图像与 TLS 证书混淆

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

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/799221/cc3220sf-launchxl-image-vs-tls-certificates-confusion

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

尊敬的 TI:

我当前正在尝试连接到使用 LetsEncrypt 签名的 TLSv1.2的 MQTT 代理。 我收到证书错误、但我也对用于映像的证书与 HTTPS 流量的证书之间的区别感到困惑。

如果我理解正确,则映像由 CA 签名,以确保映像对安全引导有效。 这些应该是我自己的证书、这样其他人就不能操作映像。 如果我理解正确、可以使用 UniFlash 中的"受信任根证书目录"来配置这些目录。 我不理解的是、哪些 CA 文件用于访问 HTTPS 网站。 在普通的桌面浏览器中,浏览器通常包含一个默认 CA 文件的列表,这些文件可被信任以验证 HTTPS 连接。 默认的“受信任根证书目录”是否与此类似? 还是应该将 HTTPS 流量的 CA 文件作为文件单独提供?

到目前为止,我尝试的是将 LetsEncrypt Root 和中间证书 添加为单独的文件,但我不断收到以下错误:

.[sock error]套接字0上收到的事件
[sock error]使用错误的 CA 来验证对等项。
连接到代理失败,错误代码:-688 

errors.h 文件创建的

#define SL_ERROR_BSD_ESEC_ASn_NO_signer_E (-688L)/* ASN 无签名者确认失败*/ 

对于 MQTT 示例(MQTT_CLIENT_CC3220SF_LAUNCHXL_tirtos_gcc)、我做了什么错误?
只需验证:我不应该将这些证书用作受信任的根证书目录、对吧? 因为否则,使用 LetsEncrypt 密钥的每个人都可能具有对设备的访问权限。

mj

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

    尊敬的 MJ:

    我们的证书处理指南是了解证书的不同用途以及如何使用证书连接到安全 MQTT 服务器的良好资源:

    http://www.ti.com/lit/ug/swpu332/swpu332.pdf

    通常、对于作为客户端与 CC3220进行的任何安全连接、您需要传递将用于验证服务器证书链的特定根 CA 证书。 此证书必须与对服务器证书进行签名的根 CA 证书相匹配。 受信任根 CA 目录只是根 CA 证书哈希的目录;它实际上没有完整的根 CA 证书。 因此、您需要提供与 CC3220进行安全连接时要使用的实际根 CA 证书。 此根 CA 证书的哈希值将与目录中的哈希值进行比较、以确保真实性、但除此之外、证书链验证期间不使用目录。

    对于 MQTT 示例、您需要做的主要工作是将根 CA 证书文件更正为串行闪存、文件名在 MQTT_CLIENT_APP.C 的 MQTT_Client_SECURE_FILES 中指定 查看 LetsEncrypt 文档、可以看到他们的所有证书最终都使用 DST Root X3根 CA 证书签名。 您可以通过将以下代码添加到 SimpleLinkSockEventHandler case SL_SSL_notification_wrong_root_CA 来对此进行双重检查:

    案例 SL_SSL_notification_wrong_root_CA:
    UART_PRINT ("[sock error]使用了错误的 CA 来验证对等项。\r\n);
    UART_PRINT ("请安装以下根证书:\n\n");
    UART_PRINT ("%s\n\r\n、pSock->SocketEvent.Sockdata.pExtraInfo);
    中断; 

    确定所需的根 CA 后,您可以直接从证书颁发机构的网站获取它,也可以按照以下说明从 PC 的根 CA 证书数据库中复制它:

    https://e2e.ti.com/support/wireless-connectivity/wifi/f/968/p/673247/2478357#2478357

    将正确的证书刷写到 CC3220串行闪存中后、不应再出现错误-688。 "ASN no signer to confirm"错误基本上意味着 CC3220无法验证服务器证书链的真实性、因为它使用的根 CA 证书验证链与链中实际提供的根 CA 证书不匹配。

    如果在添加根 CA 认证后仍遇到问题、请告诉我

    此致、

    Michael

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常感谢您提供了证书链接。 非常有帮助! 现在、我对代码签名的理解要好得多。
    我唯一想知道的是、如果我要在购买代码签名证书时必须小心选择哪个证书颁发机构。 根据该文档、哈希值需要在目录中、但该目录中是否有所有权限? 我找不到受支持的权限列表。

    对于 MQTT:我必须使用 DST Root X3根 CA 证书,而不是"ISRG Root X1 (自签名)"或"Let’s Encrypt Authority X3 (IdenTrust 交叉签名)"。 当我上传正确的证书时、连接成功。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 MJ:

    很高兴您确保安全 MQTT 连接正常工作。
    根 CA 认证的列表可在中找到 /tools/cc32xx_tools/certificate-catalog/readme.html

    此致、
    Michael