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

问题描述:

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

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

我不认为这是证书问题。如果可能的话,你可以检查这个[链接](https://github.com/Azure/azure-powershell/issues/655)可以使用你的账户登录你的账户'Login-AzureRmAccount -ServicePrincipal -TenantId $ tenantId -CertificateThumbprint $ thumbprint -ApplicationId $ azureAdApplication.ApplicationId'。 –

+0

您的参数语法看起来不错 - Vault base64中的证书是否已编码? –

+0

我不确定证书是否是vault是base64编码的。基本上,我在使用Azure门户创建HD洞察群集时下载了此证书 – jane

有同样的问题,并管理通过使用this page的powershell命令到PFX证书为基64字符串值转换来解决它。然后我将密钥库中的字符串值上传到秘密中。

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

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

+0

尽管链接背后的文档可能会回答您的问题,但您也应该在其中添加内容,以防止文档在移动或删除时丢失。 – Markus