将应用服务证书添加到 KeyVault 时出现错误“参数 keyVaultCsmId 具有无效值”

问题描述 投票:0回答:6

我已使用 Azure 的应用服务证书生成了通配符证书。

在此之后,Azure 要求您在 KeyVault 中配置证书,这就是我陷入困境的地方。

我有一个位于同一区域、同一订阅、同一资源组的 Keyvault。

我拥有密钥保管库的必要权限。我是用户管理员、证书官员、机密官员、密钥库贡献者。

此步骤因错误而失败

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

应用程序服务证书下的活动日志显示:

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

状态:失败

总结:

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"
    }

您能提供的任何帮助或方向将不胜感激:)

azure ssl-certificate azure-keyvault
6个回答
3
投票

我在原来的问题中没有提到的东西..

  1. 现有的密钥保管库权限模型正在使用 RBAC 进行策略,该策略处于预览状态 [Azure 基于角色的访问控制(预览)]。
  2. 它打开了“选定的网络”并允许受信任的 MS 网络..
  3. 它已经有另一个通配符证书作为秘密(不同的名称)

我暂时将 Key Vault 权限模型切换为 Vault 访问策略,并尝试链接 - 并且它有效。

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


3
投票

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

获取-AzADServicePrincipal -DisplayName microsoft.azure.certificateregistration

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


0
投票

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

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

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

App Service 使用的证书首先需要转换为(并标记为)application/x-pkcs12。使用 --password 参数(az keyvault 证书导入)从 pfx 文件重新导入证书,然后将其从 Key Vault 导入到 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


0
投票

在与它斗争了几个小时之后,这就是我所做的工作:

打开 PowerShell。

1. 获取{AppID}

获取-AzADServicePrincipal -DisplayName microsoft.azure.certificateregistration

2. New-AzRolAssignment -RoleDefinitionName“Key Vault 机密官员”-ApplicationId {AppID}


0
投票

Azure Key Vault RBAC(具有 Azure 基于角色的访问控制)❌

与应用服务证书不兼容。

具有访问策略方法的 Azure Key Vault ✔️

与应用服务证书兼容。

您需要将访问模型更改为“访问策略”,或者(如果您无权更改访问模型)使用访问策略创建新的 Key Vault。

文档提到了这个限制。

https://learn.microsoft.com/en-us/azure/key-vault/general/rbac-migration#vault-access-policy-to-azure-rbac-migration-steps:~:text=自定义% 20角色%20必需-,注意,-Azure%20App%20Service


-1
投票

解决问题:

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

默认情况下,“Microsoft.CertificateRegistration”和“Microsoft.Web”RP 无权访问模板中指定的 Key Vault,因此您需要在部署模板之前通过执行以下 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 订阅都保持不变。这是一次性操作。正确配置 Key Vault 后,您可以使用它来存储任意数量的应用服务证书,而无需再次执行这些 PowerShell 命令。

© www.soinside.com 2019 - 2024. All rights reserved.