你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于:所有 API 管理层级
API 管理允许使用客户端证书和相互 TLS 身份验证来保护对 API 后端服务的访问。 本文介绍如何使用 Azure 门户在 API 管理中管理证书。 它还说明了如何配置 API 以使用证书来访问后端服务。
还可以使用 API 管理 REST API 来管理 API 管理证书。
证书选项
API 管理提供两个选项用于管理用于保护对后端服务的访问的证书:
- 引用在 Azure Key Vault 中管理的证书。
- 直接在 API 管理中添加证书文件。
注意
目前,在工作区中,此方案尚不支持与密钥保管库集成。
建议使用密钥保管库证书,因为这样做可以提高 API 管理安全性:
- 可以在服务之间重复使用存储在密钥保管库中的证书。
- 精细 访问策略 可以应用于密钥保管库中存储的证书。
- 密钥保管库中更新的证书会在 API 管理中自动轮换。 密钥保管库中的更新后,API 管理中的证书在四小时内更新。 还可以使用 Azure 门户或通过管理 REST API 手动刷新证书。
Prerequisites
注意
建议使用 Azure Az PowerShell 模块与 Azure 交互。 要开始,请参阅安装 Azure PowerShell。 若要了解如何迁移到 Az PowerShell 模块,请参阅将 Azure PowerShell 从 AzureRM 迁移到 Az。
如果尚未创建 API 管理实例,请参阅 “创建 API 管理服务实例”。
配置后端服务客户端证书身份验证。 有关在 Azure 应用服务中配置证书身份验证的信息,请参阅 在应用服务中配置 TLS 相互身份验证。
确保您能够访问 Azure 密钥保管库中的管理证书和管理密码,或者可以上传证书到 API 管理服务。 证书必须采用 PFX 格式。 允许使用自签名证书。
如果使用自签名证书或其他自定义 CA 证书,并且 API 管理实例位于经典层之一,请在 API 管理中安装相应的根和中间 CA 证书,以启用后端服务证书的验证。 有关详细信息,请参阅 如何在 Azure API 管理中添加自定义 CA 证书
如果未安装 CA 证书,API 管理将无法验证后端服务证书,并且对后端服务的请求会失败,除非禁用证书链验证。 请参阅本文后面的 “禁用自签名证书证书链验证 ”。
注意
消耗层不支持用于证书验证的 CA 证书。
密钥保管库集成的先决条件
如果还没有密钥保管库,请创建一个。 有关创建密钥保管库的信息,请参阅 快速入门:使用 Azure 门户创建密钥保管库。
在 API 管理中启用系统分配的或用户分配的 托管标识 。
配置对密钥保管库的访问权限
- 在门户中转到你的密钥保管库。
- 在左侧菜单中,选择设置>访问配置。 请注意配置的权限模型。
- 根据权限模型,为 API 管理托管标识配置密钥保管库访问策略或 Azure RBAC 访问。
若要添加密钥保管库访问策略,请执行以下操作:
- 在左侧菜单中,选择“访问策略”。
- 在“访问策略”页面上,选择“+ 创建”。
- 在“ 权限 ”选项卡上的“ 机密权限”下,选择“ 获取 和 列出”,然后选择“ 下一步”。
- 在“主体”选项卡上搜索托管标识的资源名称,然后选择“下一步”。 如果你使用系统分配的标识,则主体为你的 API 管理实例的名称。
- 再次选择“下一步”。 在“查看 + 创建”选项卡上,选择“创建”。
若要在密钥保管库中创建证书或将证书导入密钥保管库,请参阅 快速入门:使用 Azure 门户从 Azure Key Vault 设置和检索证书。
Key Vault 防火墙要求
如果在 密钥保管库上启用了 Key Vault 防火墙 ,则必须满足以下要求:
必须使用 API 管理实例的系统分配的托管标识来访问密钥保管库。
在 Key Vault 防火墙中,启用“允许受信任的 Microsoft 服务绕过此防火墙”选项。
在选择要添加到 Azure API 管理的证书或机密时,请确保允许本地客户端 IP 地址临时访问密钥保管库。 有关详细信息,请参阅配置 Azure Key Vault 网络设置。
完成配置后,可以在密钥保管库防火墙中阻止客户端地址。
虚拟网络要求
如果 API 管理实例部署在虚拟网络中,则还应配置下列网络设置:
有关详细信息,请参阅 在虚拟网络中设置 API 管理时的网络配置。
添加密钥保管库证书
请参阅密钥保管库集成的先决条件。
重要说明
若要将密钥保管库证书添加到 API 管理实例,必须有权列出密钥保管库中的机密。
警告
在 API 管理中使用密钥保管库证书时,请注意不要删除用于访问密钥保管库的证书、密钥保管库或托管标识。
将密钥保管库证书添加到 API 管理:
在 Azure 门户中,转到 API 管理实例。
在“安全性”下,选择“证书”。
选择“证书”+ 添加”>。
在 ID 中,输入名称。
在“证书”下,选择“密钥保管库”。
输入密钥保管库证书的标识符,或选择“选择”来选择密钥保管库中的证书。
重要说明
如果自行输入密钥保管库证书标识符,请确保它没有版本信息。 否则,在密钥保管库中更新后,证书不会在 API 管理中自动轮换。
在 客户端标识中,选择系统分配的标识或现有的用户分配托管标识。 有关详细信息,请参阅在 Azure API 管理中使用托管标识。
注意
标识需要拥有从密钥保管库获取和列出证书的权限。 如果尚未配置对密钥保管库的访问权限,API 管理会提示你,以便它可以使用必要的权限自动配置标识。
选择 添加 。
选择“保存”。
上传证书
将客户端证书上传到 API 管理:
在 Azure 门户中,转到 API 管理实例。
在“安全性”下,选择“证书”。
选择“证书”+ 添加”>。
在 ID 中,输入名称。
在“证书”下,选择“自定义”。
浏览以选择证书 .pfx 文件并输入其密码。
选择 添加 。
选择“保存”。
证书上传后,会显示在“证书”窗口中。 如果有多个证书,请注意刚刚上传的证书的指纹。 需要配置 API 才能将客户端证书用于 网关身份验证。
将 API 配置为使用客户端证书进行网关身份验证
在 Azure 门户中,转到 API 管理实例。
在“API”下选择“API”。
从列表中选择 API。
在“ 设计 ”选项卡上,选择 “后端 ”部分中的铅笔图标。
在 网关凭据中,选择 “客户端证书 ”,然后在 “客户端证书 ”列表中选择证书。
选择“保存”。
警告
此更改立即生效。 对 API作的调用将使用证书在后端服务器上进行身份验证。
提示
为 API 后端服务的网关身份验证指定证书时,该证书将成为该 API 的策略的一部分,可在策略编辑器中查看。
禁用自签名证书的证书链验证
如果使用自签名证书,并且 API 管理实例位于经典层之一,则需要禁用证书链验证,使 API 管理能够与后端系统通信。 否则,你将获得 500 错误代码。 若要禁用此验证,可以使用New-AzApiManagementBackend(用于新后端)或Set-AzApiManagementBackend(对于现有后端)PowerShell cmdlet 并将参数设置为-SkipCertificateChainValidationTrue:
$context = New-AzApiManagementContext -ResourceGroupName 'ContosoResourceGroup' -ServiceName 'ContosoAPIMService'
New-AzApiManagementBackend -Context $context -Url 'https://contoso.com/myapi' -Protocol http -SkipCertificateChainValidation $true
还可以使用后端 REST API 禁用证书链验证。
删除客户端证书
若要删除证书,请在省略号 (...) 菜单上选择“删除”:
重要说明
如果证书由任何策略引用,将显示警告屏幕。 若要删除证书,必须先将其从配置为使用它的任何策略中删除。