主题中讨论的其他器件: UNIFLASH
工具与软件:
您好!
我正在 尝试 在 TI 的 CC3220SF Launchpad 和 AWS IoT Core 代理之间建立安全 MQTT 连接。 我已经遵循了 与此问题相关的大多数其他线程、但是、 提供的解决方案要么不 适合我、要么似乎是死胡同。
我正在 使用"mqtt_client_over_tls_1_3"演示工程 TI-RTOS7和 SDK 7.10.00.13作为基础、似乎无法使 安全连接正常运行。
我设法获得了一个不安全的连接,以及一个安全的连接为 mosquitto 代理工作,它只使用一 个证书进行验证,但 AWS 需要3个文件(root-CA.crt、client.cert.pem、private key.private .key ),而尝试用同样的方式使用它们似乎不起作用。
以下是我的当前配置以及到目前为止已尝试的各种功能:
-在"wifi_settings.h"中设置的 AP_SSID 和 AP_PASSWORD
-使用 mqtt_qos_0
-连接标志: MQTTCLIENT_NETCONN_URL | MQTTCLIENT_NETCONN_SEC | MQTTCLIENT_NETCONN_SKIP_CERTIFICATE_CATEGORY_VERIFICATION
-端口8883
-在 userFiles 中使用 uniflash 刷写证书(根目录)
-安全文件: {"private-key.pem","client-cert.t52.pem","root-ca.pem", NULL}
使用 "安全文件"中的上述文件、我收到以下错误:
mbedtls_x509_crt_parse (远程根 CA 证书)::root-ca.pem 返回-8576
mbedtls_x509_crt_parse (本地 PEM 证书):client-cert.404.pem 返回-8576
mbedtls_pk_parse_key (私钥):private key.pem 返回-15616
...
mbedtls SSL/TLS 握手失败。
...
连接失败:-3001
-我也使用了尝试 转换证书到.der 文件使用以下命令:
OpenSSL x509 -inform pem -in <CA_CERT_FILE_NAME>-outform der -out root-CA.der
OpenSSL x509 -inform pem -in <CLIENT_CERT_FILE_NAME>-outform der -out client-cert.der
OpenSSL pkcs8 -topk8 -in. -inform pem -out private-key.der -outform der -nocrypt
使用.der 格式的证书时、它现在成功执行 SSL/TLS 握手并且证书验证通过、但是它会为我提供 以下 "mbedtls_ssl_READ return 0"、然后是 mqtt_event-server-disconnect
-我已经用一个名为 MQTT Explorer 的测试客户端测试了这些证书+私钥。 当使用 原始格式(.pem/.crt)的证书时、我能够成功连接和发送/接收消息、但是以.der 格式使用证书时、连接失败。
- AWS IoT Core Thing 设置正确,并附有政策。
-政策本身不受限制,其设置 为接受所有:{..,"行动":"IoT :*","资源":"*",...}
-我有 AWS CloudWatch 日志设置为 IoT Core 和一些日志显示,它确实设法连接,给出以下信息:
{...、"status":"succe"、"eventType":"connect"、"protocol":"mqtt"、"clientId":"iotconsole-..."、 ....}
尽管有连接、但它无法通过发送任何消息、似乎随后断开连接。
从我收集到的信息中、我认为证书解析不正确、导致连接失败。 如果我尝试使用.pem/.crt 格式进行连接、则无法解析证书、如果我使用.der 格式、它会给我一个 mbed_ssl_read()返回0 (这是当 peer/AWS 关闭连接时??)。
如有任何帮助、将不胜感激。