【Azure App Service】在App Service中查看CA证书 - LuBu0505/My-Code GitHub Wiki
问题描述
在 Azure App Service 中,默认的多租户 Windows 环境(包括 Free、Basic、Standard 和 Premium 计划)无法修改其受信任的根证书列表。当托管在 App Service 上的 Windows 应用尝试通过 SSL 连接到远程端点时,如果远程服务使用的是自签名证书或私有 CA 证书,SSL 握手将失败,并出现如下错误:
“Could not establish trust relationship for the SSL/TLS secure channel”
这是因为远程服务的证书未被 App Service 实例信任。
问题解答
针对上述问题,有以下两种解决方案:
使用受信任的根证书颁发机构(CA)签发的证书
确保远程服务使用的是由 App Service 默认信任的根 CA 颁发的证书。你可以通过 Kudu 工具查看当前受信任的根 CA 列表:
Windows 应用: 进入 Azure Portal 中的 Web App,点击“开发工具 > 高级工具 > Go”,进入 Kudu 页面。 在 Debug Console 中选择 PowerShell,执行命令:
dir cert:\localmachine\root
Linux 应用: 在 Kudu 中进入 SSH,执行命令:
cd /etc/ssl/certs
ls | find *.pem
此外,如果是自己上传的CA或PFX证书,可以在 /var/ssl/certs 或 /var/ssl/private中查看,这个前提是需要把证书的指纹配置在参数 WEBSITE_LOAD_CERTIFICATES 和 WEBSITE_LOAD_ROOT_CERTIFICATES 中
使用 App Service Environment(ASE)加载自定义 CA 证书 如果远程服务无法更换证书,或者必须使用私有 CA 证书,则可以将应用部署到 ASE(即 Isolated 计划),这是一个单租户环境,允许你将自己的 CA 证书加载到受信任的根证书存储中,从而实现 SSL 握手的信任建立。
在 ASE 中加载 CA 证书的步骤包括:
- 获取你的 CA 根证书文件(通常为
.cer
或.pem
格式) - 使用 PowerShell 或其他工具将其导入到本地计算机的根证书存储中
引用资料
Root CA on App Service Guide : https://azure.github.io/AppService/2021/06/22/Root-CA-on-App-Service-Guide.html
当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!