找回密码
 立即注册
首页 业界区 业界 【Azure APIM】APIM的自建网关如何解决自签名证书的受信 ...

【Azure APIM】APIM的自建网关如何解决自签名证书的受信任问题呢?(方案二)

尚腱埂 2026-1-21 22:10:00
问题描述

在先前的三篇博文
1:【Azure APIM】APIM的自建网关如何解决自签名证书的受信任问题呢?(方案一)  
2:【Azure APIM】如何解决后端API服务配置自签名证书时APIM请求报错500:Error occured while calling backend service 
3:【Azure 环境】在Windows环境中使用OpenSSL生成自签名证书链步骤分享
我们分别介绍了使用OpenSSL生成自签名证书,然后解决APIM服务对自签名证书的信任问题。不论是APIM托管的网关,还是自建的网关都可以通过安装证书后使得请求受信任。
正如常规的证书验证中,客户端是可以跳过证书验证这一环节的:如:浏览器的继续访问不安全的网站提示窗口, curl -k 命令等
1.png

那么,在APIM的配置上,是否可以直接设置忽略证书验证呢?
 
问题解答

可以的,APIM可以设置对后端的HTTPS自签名证书的验证过程为禁用。使得APIM网关服务能和后端服务进行HTTPS通信。
官方文档说明如下:
禁用自签名证书的证书链验证
参考文档:https://docs.azure.cn/zh-cn/api-management/api-management-howto-mutual-certificates#disable-certificate-chain-validation-for-self-signed-certificates
如果使用自签名证书,则需要禁用证书链验证,使 API 管理能够与后端系统通信。 否则,你将获得 500 错误代码。
若要禁用此验证,可以使用New-AzApiManagementBackend(用于新后端)或Set-AzApiManagementBackend(对于现有后端)PowerShell cmdlet 并将参数设置为-SkipCertificateChainValidationTrue:
  1. $context = New-AzApiManagementContext -ResourceGroupName 'ContosoResourceGroup' -ServiceName 'ContosoAPIMService'
  2. New-AzApiManagementBackend -Context  $context -Url 'https://contoso.com/myapi' -Protocol http -SkipCertificateChainValidation $true
复制代码
还可以使用后端 REST API 禁用证书链验证。
实际的操作中,需要使用到APIM中的 Backend 功能
第一步:新建或修改Backend

可以使用Powershell脚本来创建新的backend,示例脚本如下:
  1. # 登录Azure China
  2. Connect-AzAccount -Environment AzureChinaCloud
  3. # 修改APIM
  4. $apimContext = New-AzApiManagementContext -ResourceGroupName "your resource group name" -ServiceName "your apim name"
  5. # 对已存在的backend进行修改
  6. Set-AzApiManagementBackend -Context  $apimContext -Url 'https://lbca.mylubu.com' -Protocol http -SkipCertificateChainValidation $true
  7. # 新建backend 并设置  -SkipCertificateChainValidation $true
  8. New-AzApiManagementBackend -Context  $apimContext -Url 'https://lbca.mylubu.com' -Protocol http -SkipCertificateChainValidation $true
复制代码
执行后的效果:
2.png

当然,更直接的方式是通过Azure APIM的门户页面创建:
在下面的3步中,最重要的就是一定要反选 Validate Certificate Chain! 默认它是勾选的。
3.png

第二步:在API中使用backend

当第一步的Backend创建好之后,如何在API中使用呢?
参考说明:https://docs.azure.cn/zh-cn/api-management/set-backend-service-policy
示例策略如下:

4.png

 
第三步:测试

在APIM门户上测试

在Azure 托管的APIM 门户上测试,成功。(不需要上传根证书,中间证书,可节约上传证书后等待APIM完成更新的45分钟左右时间)
5.png

 
在AKS自建网关上测试

在AKS Self Host上环境中测试, 访问:curl -H 'Ocp-Apim-Subscription-Key: '  'https:///ca2/'  -k 

 
以上方法,可以在不需要证书的情况下,成功访问配置了自签名证书的后端服务API。只是此种办法还是存在一定的安全风险,需要谨慎使用。
 
参考资料

禁用自签名证书的证书链验证 : https://docs.azure.cn/zh-cn/api-management/api-management-howto-mutual-certificates#disable-certificate-chain-validation-for-self-signed-certificates
  

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

7 天前

举报

您需要登录后才可以回帖 登录 | 立即注册