首页 > 解决方案 > Azure IOT SDK C# GroupCertificateVerification 不起作用?

问题描述

我正在尝试为注册组完成所有权证明。

我使用此处找到的代码创建了一个测试证书https://github.com/Azure/azure-iot-sdk-csharp/tree/master/provisioning/device/samples/ProvisioningDeviceClientX509

这创建了一个证书。假设这是正确的证书,到目前为止一切顺利。

现在,我需要在门户的设备配置服务的“证书”部分验证此证书。根据文档,我应该能够使用这组代码创建验证证书https://github.com/Azure/azure-iot-sdk-csharp/tree/master/provisioning/service/samples/GroupCertificateVerificationSample

不幸的是,它不起作用。经过一番调试,我发现代码在提供的 pfx 文件中找不到私钥,因此无法生成验证证书。

任何熟悉此问题并知道如何解决此问题的人?

标签: azure-iot-hub

解决方案


您指出的工具仅用于自签名证书身份验证(个人注册)。注册组的证书结构更复杂,至少需要一个证书颁发者(CA 根或颁发机构)来签署设备使用的叶证书。

有关创建注册组证书的信息,请参阅https://github.com/Azure/azure-iot-sdk-csharp/tree/master/provisioning/device/samples/ProvisioningDeviceClientX509#using-your-certificates 。

  1. 使用此工具和指南生成测试证书(我们建议为生产环境使用适当的 PKI 和 CSR):https://github.com/Azure/azure-iot-sdk-c/blob/master/tools/CACertificates/CACertificateOverview。 MD

  2. 然后,您可以使用上面链接中的第 3 步或此处提供的工具/示例来创建验证证书:https ://github.com/Azure/azure-iot-sdk-csharp/tree/master/provisioning/service/样本/GroupCertificateVerificationSample。此步骤验证您是根证书的所有者。(出于安全目的,您永远不应将 PFX 或私钥上传到 Azure。)

  3. 第 1 点中的工具会将证书链导入适当的存储(使用 certmgr.msc 并查看受信任的根证书颁发机构、中间证书颁发机构和个人存储)。如果不是这种情况,您需要导出一个包含整个链的公共部分的 p7b 文件,并将公共证书集合(代表信任链)提供给 SecurityProviderX509Certificate 第二个参数。在生产环境中,我们建议使用证书存储。

  4. 使用 Provisioning 服务进行身份验证时使用叶 PFX。


推荐阅读