mqtt 握手成功后,使用带有 mbed TLS
的ECC x509 CONNECTACK失败我正在尝试使用STM32板连接到IoT中心。 我有一个使用Linux且具有完全相同的CA签名的受信任证书和设备证书的模拟项目,以确保问题不在证书或服务器配置上。 Linux设备连接良好(它使用OpenSSL作为削片机)
但是对于我的嵌入式设备STM32,我正在使用 mbedTLS 堆栈。
启用跟踪,看到15个握手步骤,然后出现以下错误:
IoTHub Connection Status = IOTHUB_CLIENT_CONNECTION_UNAUTHENTICATED, Reason = IOTHUB_CLIENT_CONNECTION_DEVICE_DISABLED
ERROR: mqtt_operation_complete_callback L#1616
Connection Not Accepted: 0x5: Not Authorized
原因对我来说可疑,但是服务器端,设备已启用并查看源代码,唯一的反应是服务器拒绝了连接。
由于我排除了证书,服务器设置和传输,因此我认为我的问题出在削片机上。
Q1)知道需要什么特定曲线吗?
//#define MBEDTLS_ECP_DP_SECP192R1_ENABLED
//#define MBEDTLS_ECP_DP_SECP224R1_ENABLED
#define MBEDTLS_ECP_DP_SECP256R1_ENABLED
#define MBEDTLS_ECP_DP_SECP384R1_ENABLED
//#define MBEDTLS_ECP_DP_SECP521R1_ENABLED
//#define MBEDTLS_ECP_DP_SECP192K1_ENABLED
//#define MBEDTLS_ECP_DP_SECP224K1_ENABLED
#define MBEDTLS_ECP_DP_SECP256K1_ENABLED
#define MBEDTLS_ECP_DP_BP256R1_ENABLED
#define MBEDTLS_ECP_DP_BP384R1_ENABLED
//#define MBEDTLS_ECP_DP_BP512R1_ENABLED
//#define MBEDTLS_ECP_DP_CURVE25519_ENABLED
Q2)我可以启用哪些跟踪来了解为什么服务器拒绝证书。
答案 0 :(得分:0)
https://github.com/coisme/Mbed-to-Azure-IoT-Hub声称它可以与Azure IoT Hub一起使用,并且它在默认配置之上唯一启用的功能是MBEDTLS_SHA1_C
。
答案 1 :(得分:0)
Azure IoT C SDK有一个用于MBED的端口,参考:https://github.com/Azure/azure-c-shared-utility/blob/1d622902d7842f94193fc394987f2b4e978bb700/adapters/tlsio_mbedtls.c