0

我正在尝试使用 IoT SDK 与 DPS 通信,然后与 IoT Hub 通信。

当我加载一个有效的证书 PEM 文件时,它在如下所示的调试窗口中看起来是正确的:

在此处输入图像描述

加载证书后,我无法在 IoT SDK 中使用它,出现以下错误:

在此处输入图像描述

[注意我已经将 DPS 配置为信任 ca.cert.pem 并创建了一个注册组。

我的证书是v1,如下图:

在此处输入图像描述

我正在使用来自 OpenSSL 的一个非常简单的 CA:

openssl genrsa -aes256 -out ca.key.pem 4096
openssl req -key ca.key.pem -new -x509 -days 3650 -sha256 -out ca.cert.pem 

openssl req -nodes -new -subj /CN=device4 -sha256 -out verify.csr -keyout private.pem
openssl x509 -req -in verify.csr -CA ca.cert.pem -CAkey ca.key.pem -CAcreateserial -out public.pem -days 180 -sha256

这是我正在使用的代码:

certificate = X509Certificate2.CreateFromPemFile(publicKeyFileName, privateKeyFileName);

SecurityProviderX509Certificate securityProvider = new SecurityProviderX509Certificate(certificate);
ProvisioningDeviceClient = ProvisioningDeviceClient.Create(DPSURL, DPSScopeId, securityProvider, provisioningTransportHandler);
DeviceRegistrationResult registrationResult = ProvisioningDeviceClient.RegisterAsync().Result;
4

1 回答 1

0

SDK 中似乎存在问题。如果您先导出到 PFX,然后再导入 PFX,则有一种解决方法。在此处提交错误:https ://github.com/Azure/azure-iot-sdk-csharp/issues/2150

于 2021-08-17T16:47:00.323 回答