将应用服务证书添加到密钥保管库时出错"The parameter keyVaultCsmId has an invalid value"



我已经使用Azure的应用程序服务证书生成了一个通配符证书。

在此之后,Azure要求您在KeyVault中配置证书,这就是我被卡住的地方。

我有一个Keyvault,它在相同的区域,相同的订阅,相同的资源组。

我有进入密钥库的必要权限。我是一个用户管理员,证书官员,秘密官员,密钥库的贡献者。

此步骤失败,出现错误

Failed to link certificate with the selected Key Vault. Check below errors for more detail.

App Service Certificate下的Activity Log显示:

操作名称:添加或更新证书

状态:Failed

概要:

Operation name : Add or Update Certificate
Time stamp : Tue Jan 19 2021 07:10:46 GMT+1100 (Australian Eastern Daylight Time)
Event initiated by: xxxx
Error code: BadRequest
Message : The parameter keyVaultCsmId has an invalid value.

JSON包含以下重要信息:

"authorization": {
"action": "Microsoft.CertificateRegistration/certificateOrders/certificates/write",
"scope": "/subscriptions/xxx/resourceGroups/yyyyyyy/providers/Microsoft.CertificateRegistration/certificateOrders/InternalWildCard/certificates/InternalWildCard"
}
"properties": {
"statusCode": "BadRequest",
"serviceRequestId": null,
"statusMessage": "{"Code":"BadRequest","Message":"The parameter keyVaultCsmId has an invalid value.","Target":null,"Details":[{"Message":"The parameter keyVaultCsmId has an invalid value."},{"Code":"BadRequest"},{"ErrorEntity":{"ExtendedCode":"51008","MessageTemplate":"The parameter {0} has an invalid value.","Parameters":["keyVaultCsmId"],"Code":"BadRequest","Message":"The parameter keyVaultCsmId has an invalid value."}}],"Innererror":null}",
"eventCategory": "Administrative",
"entity": "/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.CertificateRegistration/certificateOrders/InternalWildCard/certificates/InternalWildCard",
"message": "Microsoft.CertificateRegistration/certificateOrders/certificates/write",
"hierarchy": "xxxx"
}

你能提供的任何帮助或方向都将非常感激:)

我在最初的问题中没有提到的东西…

  1. 现有的密钥库权限模型正在使用RBAC进行策略预览[Azure基于角色的访问控制(预览)]。
  2. 它有"Selected Networks"打开并允许可信MS网络..
  3. 它已经有另一个通配符证书作为秘密(不同的名称)

我暂时将密钥库权限模型切换为密钥库访问策略,并尝试链接-并且成功了。

看起来像使用Azure RBAC的权限模型的错误。

Azure AD中应该有一个服务主体,如果没有,您可以创建它。

Get-AzADServicePrincipal -DisplayName microsoft.azure. certificaterregistration

您需要通过访问策略或RBAC为keyvault分配该权限。

Azure Key Vault支持的证书格式为PFX和PEM。

•.pem文件格式包含一个或多个X509证书文件。

•.pfx文件格式是一种归档文件格式,用于在单个文件中存储多个加密对象,即服务器证书(为您的域颁发),匹配的私钥,并可选择包括中间CA。

应用服务使用的证书首先需要转换为(并标记为)application/x-pkcs12。使用——password参数从pfx文件重新导入证书(az keyvault证书导入),然后将其从密钥库导入到web应用程序可能会有所帮助。你可以参考这个博客,可能会有所帮助。

另外,查看Cert和Key Vault是否在其原始资源组中。

详细信息:https://learn.microsoft.com/en-us/azure/key-vault/certificates/tutorial-import-certificate

https://azure.github.io/AppService/2016/05/24/Deploying-Azure-Web-App-Certificate-through-Key-Vault.html

修复方法:

https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.web/app-service-certificate-standard

默认为"Microsoft. exe"。"证书注册"one_answers"微软"。Web rpc无法访问模板中指定的密钥库,因此您需要在部署模板之前通过执行以下PowerShell命令来授权这些rp:

Login-AzureRmAccount
Set-AzureRmContext -SubscriptionId AZURE_SUBSCRIPTION_ID
Set-AzureRmKeyVaultAccessPolicy -VaultName KEY_VAULT_NAME -ServicePrincipalName f3c21649-0979-4721-ac85-b0216b2cf413 -PermissionsToSecrets get,set,delete
Set-AzureRmKeyVaultAccessPolicy -VaultName KEY_VAULT_NAME -ServicePrincipalName abfa0a7c-a6b6-4736-8310-5855508787cd -PermissionsToSecrets get

ServicePrincipalName参数表示用户租户中的这些rp,并且对于所有Azure订阅将保持相同。这是一次性操作。一旦你正确配置了密钥库,你就可以使用它来存储尽可能多的应用程序服务证书,而无需再次执行这些PowerShell命令。

相关内容

最新更新