升级azure-iot-sdk-c至LTS_07_2021_Ref01后证书验证失败需新增编译参数吗
解决方案
根因
Azure IoT服务2021年第二季度完成根证书迁移,原有Baltimore根证书正式替换为DigiCert Global Root G2根证书。LTS_07_2021_Ref01版本SDK对应服务端已默认使用新根证书,当前编译参数中-Duse_baltimore_cert=ON仅内置旧根证书,无法匹配服务端证书链,因此触发TLS证书验证失败。
调整方案
不需要新增额外编译参数,仅需调整现有参数即可解决:
- 将
-Duse_baltimore_cert=ON替换为-Duse_digicert_g2_root_cert=ON,让SDK内置新版DigiCert G2根证书用于服务端校验 - 若需兼容旧服务端点,可保留
-Duse_baltimore_cert=ON同时新增-Duse_digicert_g2_root_cert=ON,让SDK同时内置两个根证书 - 同步校验设备系统时间,时间偏差超出证书有效期范围也会触发相同验证错误
- 若使用自定义证书链,可将
-Duse_sample_trusted_cert=ON改为OFF,在客户端初始化时手动传入可信根证书内容即可
验证
调整参数后重新编译SDK,测试预配服务连接逻辑,TLS握手成功即可正常完成设备注册,不会再抛出证书验证异常。
内容的提问来源于stack exchange,提问作者Dasthananda Dassu
相关产品推荐
相关产品推荐

