我正在尝试将 azure-iot-sdk-c 移植到 stm32f767zi 板上,并且取得了一定的成功。但是,现在该程序正处于尝试与服务器 mbedtls 进行 SSL 握手的地步,无法验证我针对服务器证书提供的证书。日志行是:
x509_verify_cert() 返回 -9984 (-0x2700)
这转化为 MBEDTLS_ERR_X509_CERT_VERIFY_FAILED 错误
我尝试过提供不同的证书(Baltimore CyberTrust Root,Microsoft IT TLS CA 1,使用发送来验证的证书),但它们都失败并出现相同的错误。
我已将失败范围缩小到 mbedtls 库中的 mbedtls_rsa_rsassa_pkcs1_v15_verify() 失败并出现错误:
MBEDTLS_ERR_RSA_INVALID_PADDING
由于我假设 LwIP 和 mbedtls 工作正常,我只能相信我提供的证书或我的配置之一是错误的,但我对 mbedtls/ssl 了解不足,无法知道我使用的是哪个配置/证书应该使用。
总的来说,我的问题是,我用于尝试连接的证书(巴尔的摩 CyberTrust Root)是否是正确的证书,以及我没有设置的 mbedtls 中是否有任何明显的设置?