mqtt Сбой CONNECTACK после успешного рукопожатия с использованием ECC x509 с mbed TLS
Я пытаюсь подключиться к IoT Hub с помощью платы STM32.
У меня есть смоделированный проект, использующий 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
Причина мне кажется подозрительной, но на стороне сервера устройство включено и, глядя на исходный код, единственный ответ - сервер отклонил соединение.
Поскольку я исключил сертификаты, настройки сервера и транспорт, я предполагаю, что моя проблема связана с Chipper.
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) Какие следы можно включить, чтобы понять, почему сервер отклоняет сертификат.