将 X.509 证书与适用于 C 的 Azure IoT SDK 结合使用
Using X.509 certificates with the Azure IoT SDK for C
我在我的设备上使用 C Azure IoT SDK 通过 MQTT 与我的 Azure IoT 中心通信。
使用对称密钥身份验证,一切正常。我可以在集线器上创建一个设备,将连接字符串复制到我的设备应用程序代码,一切都很好。
但是,我希望使用 X.509 证书进行身份验证,因为它更安全。在集线器上创建设备时,可以 select 自签名或 CA 签名选项。然后不会生成连接字符串。
然而,Azure IoT C SDK 附带的示例设备应用程序代码在创建设备句柄时始终使用以下函数,即使在 iothub_ll_client_x509_sample.c 中也是如此:
IoTHubDeviceClient_LL_CreateFromConnectionString(connectionString, protocol);
这在使用 X.509 身份验证方法时不起作用,因为没有任何连接字符串。
有谁知道我该如何解决这个问题?如何连接?有很多关于在集线器上注册证书等的信息,但没有关于如何使用 C SDK 进行连接的信息。
您正在查看的 sample code 应该向您展示如何使用 X.509 证书。连接字符串(参见第 55 行)如下所示:
"HostName=<host_name>;DeviceId=<device_id>;x509=true"
该示例还向您展示了如何包含 X.509 证书和密钥。
我在我的设备上使用 C Azure IoT SDK 通过 MQTT 与我的 Azure IoT 中心通信。
使用对称密钥身份验证,一切正常。我可以在集线器上创建一个设备,将连接字符串复制到我的设备应用程序代码,一切都很好。
但是,我希望使用 X.509 证书进行身份验证,因为它更安全。在集线器上创建设备时,可以 select 自签名或 CA 签名选项。然后不会生成连接字符串。
然而,Azure IoT C SDK 附带的示例设备应用程序代码在创建设备句柄时始终使用以下函数,即使在 iothub_ll_client_x509_sample.c 中也是如此:
IoTHubDeviceClient_LL_CreateFromConnectionString(connectionString, protocol);
这在使用 X.509 身份验证方法时不起作用,因为没有任何连接字符串。
有谁知道我该如何解决这个问题?如何连接?有很多关于在集线器上注册证书等的信息,但没有关于如何使用 C SDK 进行连接的信息。
您正在查看的 sample code 应该向您展示如何使用 X.509 证书。连接字符串(参见第 55 行)如下所示:
"HostName=<host_name>;DeviceId=<device_id>;x509=true"
该示例还向您展示了如何包含 X.509 证书和密钥。