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.

[参考译文] MSP432E401Y:具有 SSL/TLS 且通过客户端证书进行身份验证的 MQTT

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1335831/msp432e401y-mqtt-with-ssl-tls-and-authentication-by-client-certificate

器件型号:MSP432E401Y

尊敬的 Charles:

我们已在未加密的情况下设置了 MQTT 客户端、并且运行正常。 但是、在添加 SSL/TLS 时、完全不起作用。 MQTTClient_connect 返回-2021、但在更详细地调试时、 结果表明 SlNetIfNDK_sockStartSec 无法创建安全套接字、因为它无法检索证书。

出于安全原因、证书和密钥不存储在文件系统中、而是作为固件内的数组、由 SlNetif_loadSecObj 将它们传递到 SlNet:

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
MQTTClient_Handle mc;
MQTTClient_Params mp;
MQTTClient_ConnParams mcp;
// Virtual file names of the certificates
char *msf[3] = { "ca.pem", "cert.pem", "key.pem" };
//Certificates
const uint8_t sc_sec_ca[] = "-----BEGIN CERTIFICATE-----\n"
"MIIDbTCCAlWgAwIBAgIQOJS41HdZ0aBH554ITPDjmzANBgkqhkiG9w0BAQsFADBJ\n"
...
"3v1WIFze0MYF6XK6IQ6ia6o=\n"
"-----END CERTIFICATE-----";
const uint16_t sc_sec_ca_l = sizeof(sc_sec_ca);
const uint8_t sc_sec_pk[] = "-----BEGIN PRIVATE KEY-----\n"
"MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDMgIYvGyxtmoyK\n"
...
"zVBWLpomdgRuAVM6Zgs8MfaK4zoD/c8KwI5A4iOqCpZseCAu9ohTNMTnB9VeVSkb\n"
"TMZFwZa3TMRvDY7uZVGzEQB2\n"
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 如果仅传递 CA 证书并将.files 设置为1或传递全部3个文件、则 MQTTClient_connect 将始终返回-2021。

SlNetIf_loadSecObj 始终返回0、在调试视图中可以看到它正确地存储了信息。 正确意味着它将文件名存储为文件名、并将数据缓冲区存储如下:

这似乎很明显、但查看错误发生的位置时、并不是:

上图显示了 lookupObj 函数、此函数由 SlNetIfNDK_sockStartSec 调用以获取证书。 在这里,你可以看到名称和 buf 是反相的,所以 lookupObj 在将名称与名称进行比较时不会找到任何东西。

我注意到、过去有一个亚马逊的"插件"、它应该在非常类似的根证书、客户端证书和密钥中工作。 此 SDK 不再提供下载。 这仅仅是因为亚马逊已经改变了他们的东西,所以它不会再与他们工作了吗? 如果是、确认我们无意使用该代码连接到亚马逊、而只是将其与我们的实施进行比较、您能否提供该链接?

如果您对此问题有任何其他建议或想法、请随时发表评论!

此致
彼得

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Unknown 说:
    我注意到过去有一个亚马逊的"插件"应该在非常类似的情况下使用根证书、客户端证书和密钥。 此 SDK 不再提供下载。 [/报价]

    尊敬的 Peter:

     您指的是哪个具体的 SDK? 如果过去 TI.com 上提供了可供下载的内容、我可以查找。 我对 AWS 不熟悉、对 TLS 的 MQTT 也不熟悉。  

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

    尊敬的 Charles:  

    这里是原始下载链接的缓存版本: https://cc.bingj.com/cache.aspx?q=awsniot+sdk+msp432+plugin&d=4793149510718722&mkt=it-IT&setlang=it-IT&w=UqjeYpUbmbKDrDZIqcUgOnANhhwS8bSI

    此致

    彼得  

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

    尊敬的 Peter:

      URL 似乎来自非 TI 网站 ROM bingj.com。 我已单独查找此 AWS 插件、但在产品页面上找不到它。 产品页面上列出了其他可下载的插件。  

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

    这是 Bing 的缓存功能,显示的页面是 TI.com 上直到去年9月. 这是为了向您提供可能有助于获取文件的所有信息...

    项目代码为 SIMPLELINK-MSP432E4-IDE PLUGIN-FOR-AWSIOT、指向安装程序的链接为 dr-download.ti.com/.../aws_msp432e4_4_10_00_03.exe。

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

    尊敬的 Peter:

     我需要咨询支持 TI.com 的 TI 团队、了解这个错误的链接。 我不希望该问题很快得到解决。  

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

    也许可以更容易地获得文件,而通过 PM 发送?

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

    有新消息?

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

    尊敬的 Peter:

    我两周前提交了 TT、昨天收到我们网络团队的回复、称该链接有意从 TI.com 撤下进行下载。 现在,我不知道为什么它被撤回。 我可以向网络团队跟进、但与此同时、TLS 示例是否为 C:\ti\simplelink_msp432e4_SDK_4_20_00_12\examples\rtos\MSP_EXP432E401Y\ns\tcpechotls help?  我自己不熟悉 TLS 和 MQTT 应用程序。  

    我也在旅行,明天会回来。 我的答复可能会有延误。  

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

    尊敬的 Charles:

    我预料到这一点。 可能是由于 AWS 中的更改、插件不再用于此目的。 然而,它仍然是足够的,而且对我们的目的也是至关重要的。

    tcpechotls 用处不大、因为问题位于 MQTT 库中、而不是 TLS 中。

    此致
    彼得

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

    尊敬的 Peter:

     要将此插件插入、需要完成一个过程。 我无法保证您能够获得内部批准、以便再次发布、因为插件是出于合法原因(例如法律或其他原因)而被关闭的。