Azure APIM自建网关如何处理自签名证书不被信任问题?

摘要:问题描述 在先前的两篇博文 1:【Azure APIM】如何解决后端API服务配置自签名证书时APIM请求报错500:Error occured while calling backend service 2:【Azure 环境】在Wind
问题描述 在先前的两篇博文 1:【Azure APIM】如何解决后端API服务配置自签名证书时APIM请求报错500:Error occured while calling backend service 2:【Azure 环境】在Windows环境中使用OpenSSL生成自签名证书链步骤分享 我们介绍了使用OpenSSL生成自签名证书,然后解决APIM服务对自签名证书的信任问题。 现在,APIM可以自建网关(Self-host gateway), 把APIM的功能部署在自己管理的AKS环境中,使用Self-host gateway功能。 新的调用流程图如下: 现在,也会面临一个同样的问题,如何在AKS中的POD中,让请求HTTPS的自签名证书得到信任呢? 如果,只是根据文档把自建网关部署完成,访问AKS服务对外提供的IP地址,就会遇见错误: errors: [{"elapsed":360,"source":"request-forwarder","path":"forward-request\\forward-request","reason":"BackendConnectionFailure","message":"The remote certificate was rejected by the provided RemoteCertificateValidationCallback.","section":"backend"}] ## 使用kubectl logs <pod name> 查看日志: 问题解答 在官方文档中,有提供方案。但是,它的描述实在是太简单了,理解难度高,根据文档的可操作程度低。 为自托管网关创建自定义 CA (Link: https://docs.azure.cn/zh-cn/api-management/api-management-howto-ca-certificates) 如果使用自承载网关,则不支持通过上传到 API 管理服务的 CA 根证书验证服务器和客户端证书。 若要建立信任,请配置特定的客户端证书,使其被网关作为一个自定义的证书颁发机构所信任。 使用网关证书颁发机构REST API 为自承载网关创建和管理自定义 CA。 创建自定义 CA 的步骤: 将证书.pfx 文件添加到 API 管理实例。 使用网关证书颁发机构 - 创建或更新REST API 将证书与自管理网关相关联。 两个步骤1)上传证书,2)标记证书为可信任。但是,实际操作起来,面对的疑问是: 证书书 .pfx 文件时什么呢? 它是服务器证书? 是根证书? 还是中间证书? REST API的URL中的certificateId如何得到呢? Request body内容是什么呢?isTrusted 值设置为False表示证书被受信任,还是表示这个证书是一个不被信任的证书呢? 在经过反复实验后,终于成功的解决自签名证书受信任的问题。 分享图示步骤 第一步:把根证书,中间证书上传到APIM的Certificate目录中(注意:不是CA Certificate目录) 第二步:调用Gateway Certificate Authority - Get 方法获取第一步上传证书的certificateId 在中国区的API Endpoint为:GEThttps://management.chinacloudapi.cn/subscriptions/<00000000-0000-0000-0000-000000000000>/resourceGroups/<rg1>/providers/Microsoft.ApiManagement/service/<apimService1>/gateways/<gw1>/certificateAuthorities?api-version=2024-05-01 请求的认证Token可以登录到APIM门户上,打开浏览器开发模式(F12), 进入Network项,获取当前APIM页面发送的请求,从其中一个请求头中获取Authorization值即可。
阅读全文