Azure APIM配置后端API服务自签名证书时,请求报错500,如何解决调用后端服务出错问题?

摘要:问题描述 在博文“【Azure 环境】在Windows环境中使用OpenSSL生成自签名证书链步骤分享”,我们通过OpenSSL已经创建了自签名证书PFX文件。 当把证书配置到后端API服务,并且通过APIM作为服务对外提供的网关入口后,发
问题描述 在博文“【Azure 环境】在Windows环境中使用OpenSSL生成自签名证书链步骤分享”,我们通过OpenSSL已经创建了自签名证书PFX文件。 当把证书配置到后端API服务,并且通过APIM作为服务对外提供的网关入口后,发现客户端请求发送到APIM,但是APIM访问后端服务器时候,无法建立Https连接。报错500。 访问流图 错误信息 forward-request (356.754 ms) { "messages": [ "Error occured while calling backend service.", "The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.", "The remote certificate is invalid according to the validation procedure." ] } 在开启APIM调试Trace后,可见错误信息 面对这个问题,需要如何解决呢? 问题解答 因为浏览器发起HTTPS请求后,服务器会返回它的证书信息到客户端进行验证。但由于使用的自签名证书的根CA,中间证书都不是受信任机构所颁发的证书,所以在操作系统中没有内置CA信息,所以被浏览器认为这是不受信任的证书。就直接中断连接,返回net::ERR_CERT_AUTHORITY_INVALID 错误。 HTTPS证书验证流程图: 当CA证书不受信任的时候,浏览器报错如下 Your connection is not private Attackers might be trying to steal your information from lbca.mylubu.com (for example, passwords, messages, or credit cards). Learn more about this warning net::ERR_CERT_AUTHORITY_INVALID Subject: *.mylubu.com Issuer: My Self Intermediate CA Expires on: Feb 29, 2028 Current date: Jan 17, 2026 PEM encoded chain: -----BEGIN CERTIFICATE----- MIIE3zCCAsegAwIBAgIUVoVVHuMRMxqelxTsX4OPtc3EnuUwDQYJKoZIhvcNAQEL BQAwYTELMAkGA1UEBhMCQ04xEDAO ...... SxmYHLkIM/VbtjWKixl7mKltQMwbUvRMW+vOkZu/ibEtyG+OfGBIA9InKqE0BSng HNIRYgeO7r1AfMtLHUCy+RmC6AueslBWqdSminThQD8HbY+YvGFU9/zduVRY/Uic 3wFr -----END CERTIFICATE----- 如果对于本地客户端,解决方案就是把完整证书链的服务器证书PFX安装到本地就可以。当本地证书库中包含了这个服务器证书的中间证书,根证书后,浏览器访问就会被信任。 但是在APIM服务上,应该如何处理呢? 根据官方文档 “如何在 Azure API 管理中添加自定义 CA 证书”的介绍,APIM服务支持上传CA证书。 在AIPM的证书管理页面,因为我们的服务器证书是一张包含根证书,中间证书,服务器证书的完整证书链证书,所以心想,是否可以直接上转这一张证书就可以了呢? 实验证明,不可以! 错误实验第一步:上传服务器证书到CA Certificates 错误实验第二步:访问APIM接口,错误依旧 正确实验,按照要求,先后上传了根CA,中间CA证书。再次访问APIM接口,获取200返回,问题解决,自签名证书验证成功。 注意:在上传证书页面,只支持cer和pfx格式证书(File extension for rootCA.crt is not present in the allowed file extensions list - "cer,pfx")。所以openSSL生成的.crt 证书可以通过Windows中双击打开文件后,选择导出为CER证书。
阅读全文