401002 CA 证书未找到 - SDK - Microsoft.Azure.Devices.Provisioning.Client

401002 CA certificate not found - SDK - Microsoft.Azure.Devices.Provisioning.Client

OS - Windows 10
.net Environment - .net core 2.1
SDK - Microsoft.Azure.Devices.Client - 1.21.0
Microsoft.Azure.Devices.Provisioning.Client - 1.4.0
Microsoft.Azure.Devices.Provisioning.Transport.Amqp - 1.1.9
Microsoft.Azure.Devices.Provisioning.Transport.Http - 1.1.6
Microsoft.Azure.Devices.Provisioning.Transport.Mqtt - 1.1.8

问题描述

我正在尝试通过 azure 设备配置服务将模拟设备(.net 核心控制台应用程序)连接到 IOT 中心。这是基于 x.509 证书(根+中间证书)。

注册组创建成功,然后上传根证书,完成验证

之后从根证书生成设备证书并尝试使用下面的示例代码连接到 IOT 集线器 link:

https://github.com/Azure-Samples/azure-iot-samples-csharp/tree/master/provisioning/Samples/device/X509Sample

在我尝试连接到 IOT bub 时完成所有设置后出现以下错误,尝试了所有协议 - Amqp、Http、Mqtt...

Microsoft.Azure.Devices.Provisioning.Client.ProvisioningTransportException
  HResult=0x80131500
  Message={"errorCode":401002,"trackingId":"408d5ad7-aa7c-45a1-b19a-e4af41ccf54b","message":"CA certificate not found.","timestampUtc":"2019-08-23T09:17:53.762099Z"}
  Source=<Cannot evaluate the exception source>
  StackTrace:
<Cannot evaluate the exception stack trace>

以下是设备客户端的输入以及证书:

    private static string s_idScope = "0ne00074417";
    private const string GlobalDeviceEndpoint = "global.azure-devices-provisioning.net";
    private static string s_certificateFileName = "simulateddevicecert.pfx";

设置中是否缺少任何导致此错误的内容?还有 Azure DPS 公开的任何 REST API 来注册设备吗? (而不是使用 Azure Devices/Client SDK)

如图here, 请在设备提供的证书链中也包含中间证书。

可以找到用于将设备注册到 DPS 的 REST API 文档 here

在我的例子中,错误 401002 是由设备用于验证的证书中的 deviceIdCN 字段不匹配引起的。