无法使用存储在Azure资源模板中的密钥保管库中的证书密钥值

时间:2017-04-25 13:56:40

标签: azure azure-resource-manager

我正在尝试使用Visual Studio部署Azure HD insight Spark模板。 HD insight集群访问Data Lake,对于Data Lake Storage,我创建了一个带证书的服务主体。我已将证书存储在Azure Vault中作为机密并尝试在我的Azure资源管理器模板中访问它。但是,它会抛出以下错误Service Principal Details are invalid 我从正在运行的集群中下载了证书,证书没有任何问题。我总是使用此证书通过Portal创建集群。

 "reference": {
    "keyVault": {
      "id": "/subscriptions/e3f93473-xxx/resourceGroups/Production/providers/Microsoft.KeyVault/vaults/myvault"
    },
    "secretName": "certificateNew"
  }

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,并设法通过this page上的Powershell命令将PFX证书转换为Base-64字符串值来解决它。然后我将字符串值上传到Key Vault中的密钥。

$servicePrincipalCertificateBase64 = [System.Convert]::ToBase64String([System.IO.File]::ReadAllBytes(path-to-servicePrincipalCertificatePfxFile))

Github上有几个脚本可以将PFX转换为Base-64并将其上传到您指定的Key Vault。我尝试了其中的一些,但不知何故,他们转换为一种格式,在解析ARM模板时导致问题。我提到的方法解决了我的问题。