主题中讨论的其他器件:UNIFLASH
我不小心删除了原来的 e2egoing Issue t ticket、因此我将为我们打开一个新的 TT、以便在 MQTT 连接上启用 TLS。 劳伦斯建议我把公钥扣起来,并试图把它附加到论坛上。
e2e.ti.com/.../broker_2D00_client.zip e2e.ti.com/.../broker_2D00_client.zip
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.
我不小心删除了原来的 e2egoing Issue t ticket、因此我将为我们打开一个新的 TT、以便在 MQTT 连接上启用 TLS。 劳伦斯建议我把公钥扣起来,并试图把它附加到论坛上。
e2e.ti.com/.../broker_2D00_client.zip e2e.ti.com/.../broker_2D00_client.zip
好的。 此证书看起来没有问题。 它应"按原样"用作 表中的第二个文件。
您之前提供的私钥似乎无效(可能只有我获得的内容是无效的)、并且这似乎是唯一缺失的部分(应该是表中的第一个文件)。
您是否可以尝试使用 mqtt_Client_secure_files[]={ 、"broker-client"、"broker-client.pem"、 "ca.intelliport.local"、NULL };
你好 Kobi。 我今天下午尝试了一些获取服务器证书的方法。 但是、当我在服务器上的端口8883上运行 openssl 命令时、系统将无法返回证书。 这可能是问题的一部分吗? 下面是 openssl 请求证书的输出:
PS C:\Users\10385585> openssl s_client -showcerts -servername intelliportgw.eastus.cloudapp.azure.com -connect intelliportgw.eastus.cloudapp.azure.com:8883
已连接(00000274)
写入:errno=10054
——
无可用对等证书
——
未发送客户端证书 CA 名称
——
SSL 握手已读取0字节、写入341字节
验证:确定
——
新、(无)、密码(无)
此 TLS 版本禁止重新协商。
压缩:无
扩展:无
未协商 ALPN
未发送早期数据
验证返回代码:0 (正常)
——
如果我使用端口443、我将获得证书
有什么想法?
尊敬的 Kobi:
感谢您的答复。 我的所有文件都位于 FS 根文件夹中。 以下是相关声明:
1)文件名
#define PRIVATE_KEY "broker-client-key.pem" #define CLIENT_CERT "broker-client.pem" #define CA_FN "ca-fn" #define CLIENT_NUM_SECURE_FILES 4
2) 2)连接参数:
static char *Mqtt_Client_secure_files[CLIENT_NUM_SECURE_FILES] = {PRIVATE_KEY, CLIENT_CERT, CA_FN, NULL};
MQTTClient_ConnParams g_mqtt_conn_params =
{
MQTTCLIENT_NETCONN_IP4 | MQTTCLIENT_NETCONN_SEC |
// MQTTCLIENT_NETCONN_SKIP_DOMAIN_NAME_VERIFICATION |
MQTTCLIENT_NETCONN_SKIP_CERTIFICATE_CATALOG_VERIFICATION,
MQTT_CONNECTION_ADDRESS, // SERVER_IP_ADDRESS,
MQTT_CONNECTION_PORT_NUMBER, // SECURED_PORT_NUMBER,
SLNETSOCK_SEC_METHOD_SSLv3_TLSV1_2,
SLNETSOCK_SEC_CIPHER_FULL_LIST,
CLIENT_NUM_SECURE_FILES,
Mqtt_Client_secure_files
};
3) 3)启动时以编程方式创建文件:
int32_t fHdl;
fHdl =
sl_FsOpen((uint8_t *)PRIVATE_KEY,
(SL_FS_CREATE | SL_FS_CREATE_FAILSAFE | SL_FS_OVERWRITE |
SL_FS_CREATE_MAX_SIZE(MAX_CACERT_SIZE)),NULL);
if(fHdl >= 0)
{
ret = sl_FsWrite(fHdl, 0, (unsigned char *)brokerClientKeyPem, strlen(brokerClientKeyPem));
ret = sl_FsClose(fHdl,0,0,0);
}
else
{
}
fHdl =
sl_FsOpen((uint8_t *)CLIENT_CERT,
(SL_FS_CREATE | SL_FS_CREATE_FAILSAFE | SL_FS_OVERWRITE |
SL_FS_CREATE_MAX_SIZE(MAX_CACERT_SIZE)),NULL);
if(fHdl >= 0)
{
ret = sl_FsWrite(fHdl, 0, (unsigned char *)brokerClientPem, strlen(brokerClientPem));
ret = sl_FsClose(fHdl,0,0,0);
}
else
{
}
fHdl =
sl_FsOpen((uint8_t *)CA_FN,
(SL_FS_CREATE | SL_FS_CREATE_FAILSAFE | SL_FS_OVERWRITE |
SL_FS_CREATE_MAX_SIZE(MAX_CACERT_SIZE)),NULL);
if(fHdl >= 0)
{
ret = sl_FsWrite(fHdl, 0, (unsigned char *)srvCAPem, strlen(srvCAPem));
ret = sl_FsClose(fHdl,0,0,0);
}
else
{
}
这是非常奇怪的。 关于 SP、我们刚更新到了 SDK 的6_10_00_05版、因此有必要对该 SDK 中的 SP 进行升级。 我以前还没有这样做过、我会阅读文档并给它一张照片。
我为您提供了几项最新消息。 首先、我仍然无法获取设备上的 Uniflash 文件列表。 我们可以尝试另一种方法吗? 可以使用该 dslite.bat 脚本完成这项工作吗? 第二、昨天、我能够使用一组认证和同事生成的密钥在安全端口上连接到我们的 MQTT 代理。 这是令人鼓舞的,然而,当我把这些文件带到我们的应用程序,并编程闪存他们之前启动 MQTT ,我们得到-456错误的 CA 文件。 我在 SimpleLinkSockEventHandler 中再次设置了断点、没想到命中。
如前所述、我认为您将证书保存在代码中的方式有一些(确保行末(每行末尾的"/r/n ")符号符合要求-与 Marty 的代码相比)或编写它 (确保使用的是 strlen(srvcapem)而不是 sizeof)。
必须安装 A 服务( 通常对闪存进行编程)。 您可以使用 Uniflash 或 CCS 执行此操作。 两者都通过 UART 使用相同的方法、并且看起来它以前一直在工作(因为器件处于开发模式并且 JTAG 已启用)。 这使 Uniflash 连接变得奇怪。 请与之前制作的 Marty/Other 公司核实。