使用x509正确配置Azure IoT中心DPS组注册

时间:2019-07-01 06:23:27

标签: java azure x509certificate azure-iot-hub provisioning

我对Auzre的IoT中心中的正确配置证书有疑问。我想将Device Provisioning Service与组注册一起使用。我的目标是达到以下情形:使用CA根证书生成一些中间证书,然后使用此中间证书对设备的证书进行签名。因此,阅读文档后,我了解的是以下步骤:

  1. 上传CA根证书:

enter image description here

  1. 在组注册配置中上载中间证书:

enter image description here

  1. 使用Java代码中的设备证书进行配置。

这仅在我通过设备代码中的中间证书通过时有效(无论我在步骤2中选择了CA还是中间证书):

private static final Collection<String> INTERMEDIATE_CERTS = new LinkedList<>();
...
SecurityProvider securityProviderX509 = new SecurityProviderX509Cert(privateCert, privateKey, INTERMEDIATE_CERTS);
provisioningDeviceClient = ProvisioningDeviceClient.create(globalEndpoint, idScope, PROVISIONING_DEVICE_CLIENT_TRANSPORT_PROTOCOL, securityProviderX509);

此代码来自azure的github示例。在设备代码中使用中间证书的目的是什么?是否应该根据先前步骤中上传到Azure的中级和根CA证书链进行验证?

1 个答案:

答案 0 :(得分:1)

上载中间证书时,仅上载的是证书本身,而不是从根到中间的整个链。中间证书唯一拥有的是有关对其进行签名的证书的信息,仅此而已。一条链中可以有多个中间件,在评估设备的证书链时,我们不能对中间件链做任何假设。

设备需要提供其整个证书链,DPS才能成功配置设备。没有完整的链,就无法确定设备的信任链中是否包含经过验证的证书。

我们建议使用中间证书对设备进行签名,因为安全性最佳实践是使根保持脱机状态。