我已经使用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"
}
你能提供的任何帮助或方向都将非常感激:)
我在最初的问题中没有提到的东西…
- 现有的密钥库权限模型正在使用RBAC进行策略预览[Azure基于角色的访问控制(预览)]。
- 它有"Selected Networks"打开并允许可信MS网络..
- 它已经有另一个通配符证书作为秘密(不同的名称)
我暂时将密钥库权限模型切换为密钥库访问策略,并尝试链接-并且成功了。
看起来像使用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命令。