通过 REST API 更新 azure DPS 中个人注册的证书

问题描述

我正在通过 REST apis 对 azure DPS 进行操作。我能够通过 REST API 在“创建新的个人注册”中成功发布新条款。使用的 URL 是“https://name.azure-devices-provisioning.net/enrollments/registrationId?api-version= 2019-03-31";.我当前的任务是更新 DPS 中个人注册的证书。我正在提取证书的正文并将其附加到请求正文并执行 PUT 操作。但是我收到一条错误消息,提示注册已经存在,但具有不同的证书信息”。我提供内容类型和授权 sas 令牌作为标头。在请求正文中,我正在传递 eTag。我想我已经清除了更新操作的所有先决条件。请帮助我了解我是否在这里做错了。提前致谢!

解决方法

要更新 DPS 中的个人注册,您还必须在请求标头中添加 etag 值。其标头属性名称为 If-Match。有关详细信息,请参阅 https://docs.microsoft.com/en-us/rest/api/iot-dps/createorupdateindividualenrollment/createorupdateindividualenrollment#request-headers

,

我们可以逐步开始,在此过程中,我已使用 Azure DPS via REST API call 成功更新了我的 x509 证书。希望这对您的查询有所帮助。

步骤 1: 使用 x509 证书创建个人注册,以 base64 格式传递它。请记下响应中的“eTag”值。

61573-image.png

在 Azure DPS 门户中验证。我看到指纹与我的 x509 证书相符。

61603-image.png

第 2 步:现在是使用新证书更新现有注册的时候了。使用 base64 格式。使用请求头中的“If-Match”,值为上一步获取/复制的“eTag”。

下图显示了带有“If-match =eTag”的请求标头,用于更新现有实体。 61544-image.png

最后,我们可以看到响应是更新操作成功。

61518-image.png

在 Azure DPS 门户中验证。我看到指纹与我的新 x509 证书匹配。

61588-image.png

示例请求正文,以防万一,如果对任何人有用。

 {
  "attestation": {
         "type": "x509","X509": {
            "clientCertificates": {
                                "primary":{
                                 "certificate":"base64 string of your cert"
                                 }
                                 }    
                                   }
     },"registrationId":"testenrollment10","capabilities":{"iotEdge":false},"provisioningStatus": "enabled"
 }

如果您在此问题上需要进一步帮助,请在下方对此回复发表评论。