我正在尝试使用c SDK从我的设备中使用设备供应服务来连接到集线器。我正在使用个人注册和X.509。我使用通过SDK的“ dice_device_enrollment”工具生成的证书在中心上创建了单个注册。我还在设备上安装了证书。当我运行代码时,执行Prov_Device_LL_DoWork()函数时出现(OpenSSL)错误。当我第二次调用Prov_Device_LL_DoWork()时,程序段错误。
输出:
08:11:25 10-10-2018 [info] Prov_Device_LL_DoWork
Error: Time:Wed Oct 10 08:11:25 2018 File:/home/tijmen/azure-iot-sdk-c/c-utility/adapters/x509_openssl.c Func:log_ERR_get_error Line:29 Failure creating private key evp_key
Error: Time:Wed Oct 10 08:11:25 2018 File:/home/tijmen/azure-iot-sdk-c/c-utility/adapters/x509_openssl.c Func:log_ERR_get_error Line:36 [0] error:0906D06C:PEM routines:PEM_read_bio:no start line
Error: Time:Wed Oct 10 08:11:25 2018 File:/home/tijmen/azure-iot-sdk-c/c-utility/adapters/x509_openssl.c Func:log_ERR_get_error Line:36 [1] error:0906D064:PEM routines:PEM_read_bio:bad base64 decode
Error: Time:Wed Oct 10 08:11:25 2018 File:/home/tijmen/azure-iot-sdk-c/c-utility/adapters/tlsio_openssl.c Func:log_ERR_get_error Line:428 unable to use x509 authentication
Error: Time:Wed Oct 10 08:11:25 2018 File:/home/tijmen/azure-iot-sdk-c/c-utility/adapters/tlsio_openssl.c Func:tlsio_openssl_open Line:1251 Failed creating the OpenSSL instance.
Error: Time:Wed Oct 10 08:11:25 2018 File:/home/tijmen/azure-iot-sdk-c/umqtt/src/mqtt_client.c Func:mqtt_client_connect Line:1000 Error: io_open failed
Error: Time:Wed Oct 10 08:11:25 2018 File:/home/tijmen/azure-iot-sdk-c/provisioning_client/src/prov_transport_mqtt_common.c Func:create_connection Line:567 Failure connecting to mqtt server
Error: Time:Wed Oct 10 08:11:25 2018 File:/home/tijmen/azure-iot-sdk-c/provisioning_client/src/prov_transport_mqtt_common.c Func:prov_transport_common_mqtt_dowork Line:874 unable to create amqp connection
08:11:25 10-10-2018 [info] Prov_Device_LL_DoWork
Segmentation fault
相同的代码确实可以在我的开发机上工作,但是使用的OpenSSL版本略有不同: 在开发机上OpenSSL 1.0.1t 2016年5月3日 在设备上的OpenSSL 1.0.2d 2015年7月9日
我错过的OpenSSL版本是否有要求?
答案 0 :(得分:0)
事实证明,升级OpenSSL可以解决此问题。 我从https://github.com/openssl/openssl/tree/OpenSSL_1_0_2-stable构建了OpenSSL版本1.0.2q,并将其链接到我的应用程序。这样就解决了错误。与2015年7月9日的1.0.2d相比,似乎至少具有X.509功能的SDK需要更高版本的OpenSSL。