【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 image.png

Linux 应用: 在 Kudu 中进入 SSH,执行命令:

cd /etc/ssl/certs

ls | find *.pem image.png

此外,如果是自己上传的CA或PFX证书,可以在 /var/ssl/certs 或 /var/ssl/private中查看,这个前提是需要把证书的指纹配置在参数 WEBSITE_LOAD_CERTIFICATES 和 WEBSITE_LOAD_ROOT_CERTIFICATES 中 image.png

使用 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

当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!