【Azure APIM】APIM的自建网关如何解决自签名证书的受信任问题呢?(不成功方案的分析)

简介: 本文探讨Azure APIM自建网关信任自签名证书的第四种方案——通过`az aks update --custom-ca-trust-certificates`将CA证书注入AKS节点。经验证,该方法仅作用于节点系统层,对Pod内运行的APIM网关容器无效(因其使用.NET TLS路径,不读取系统CA)。最终确认:解决信任问题仍需回归前三种Pod级方案(如环境变量SSL_CERT_FILE、镜像预装或跳过验证)。

问题描述

在先前的四篇博文

1:【Azure APIM】APIM的自建网关如何解决自签名证书的受信任问题呢?(方案三)

2:【Azure APIM】APIM的自建网关如何解决自签名证书的受信任问题呢?(方案二)

3:【Azure APIM】APIM的自建网关如何解决自签名证书的受信任问题呢?(方案一)

4:【Azure APIM】如何解决后端API服务配置自签名证书时APIM请求报错500:Error occured while calling backend service

5:【Azure 环境】在Windows环境中使用OpenSSL生成自签名证书链步骤分享

我们分别介绍了使用OpenSSL生成自签名证书,然后解决APIM服务对自签名证书的信任问题。不论是APIM托管的网关,还是自建的网关都可以通过安装证书后使得请求受信任,通过配置API跳过证书验证环节。

在方案三中,开始从自建网关本身AKS POD”方面入手,通过配置 SSL_CERT_FILE 环境变量,来安装自签名证书 (根证书和中间证书)到POD中解决问题。

除了以上三种方案的情况下:在AKS集群的官方文档中,说可以直接更新集群,把自定义证书颁发机构(CA)向节点的信任存储添加多达 10 个 base64 编码的证书。

所以,基于这个文档,本文尝试了第四种方案:使用 az aks update  --custom-ca-trust-certificates 证书命令

 

方案步骤

准备步骤:准备好中间证书和根证书合并一起的 .crt 内容

导出方法:通过浏览器导出中间证书+根证书的 crt 文件,其内容是 Base64 编码

 

第一步:把准备好的证书传递到AKS集群

因aks集群已经创建好,所以使用 az aks update 指令

az aks update \
    --resource-group <resource-group-name> \
    --name <cluster-name> \
    --custom-ca-trust-certificates <path-to-certificate-file>

执行截图

第二步:验证自签名CA证书是否在节点中正常工作

1:使用 kubectl get nodes ,列出节点名称

2:进入节点debug模式:使用 kubectl debug node/<节点名> -it --image=mcr.azk8s.cn/aks/fundamental/base-ubuntu:v0.0.11, 如:kubectl debug node/aks-agentpool-20066971-vmss00000j -it --image=mcr.azk8s.cn/aks/fundamental/base-ubuntu:v0.0.11

3:使用 chroot /host 命令,把操作目录从当前容器环境 切换到 节点操作环境

4:对比访问两个不同自签名CA证书的URL

 

操作结果截图:

 

第三步:访问APIM的自建网关请求,自签名证书依旧不被信任。

 

为什么呢?把自签名的根证书,中间证书都安装到AKS集群中了,为何使用debug模式就可以信任这个自签名证书,而 APIM Self-hosted gateway pod却不可以呢?

疑问解答

Debug pod 之所以能信任,是因为它用的是通用 Ubuntu 基础镜像,走的是系统 CA bundle;

APIM Self‑hosted Gateway 用的是微软封装的网关容器 + .NET TLS 验证路径,完全不看 node 的 CA。

这一点在 AKS 官方文档中是明确写清楚的:“Certificates added to the AKS node trust store aren’t available to containers running in pods.”

AKS Node 安装 CA,只对 Node 生效,对 Pod 无效。 这一点,在文章开头的官方文档截图中,也特别提醒。只是,最开始没有正确理解这句话的意义!

 

所以,如果要解决APIM 中自签名CA证书的信任问题。目前验证下来,只有三种方式:

1:【Azure APIM】APIM的自建网关如何解决自签名证书的受信任问题呢?(方案一)

2:【Azure APIM】APIM的自建网关如何解决自签名证书的受信任问题呢?(方案二)

3:【Azure APIM】APIM的自建网关如何解决自签名证书的受信任问题呢?(方案三)

 

[完]

 

参考资料

在 Azure Kubernetes 服务(AKS)中使用自定义证书颁发机构(CA) :https://docs.azure.cn/zh-cn/aks/custom-certificate-authority




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

相关文章
|
9月前
|
机器学习/深度学习 移动开发 人工智能
大模型应用:庖丁解牛:QKV机制详解,大模型的注意力之眼.4
QKV机制是Transformer注意力的核心:Query(提问)、Key(标识)、Value(信息)三者通过点积计算相似度,Softmax归一化后加权融合Value,实现动态上下文感知。它能捕捉长程依赖,解决代词消解、一词多义等问题,支撑大模型强大语言理解能力。
2179 7
|
存储 监控 安全
【深入探究C++日志库写入策略】glog、log4cplus与spdlog的写入策略比较
【深入探究C++日志库写入策略】glog、log4cplus与spdlog的写入策略比较
1451 0
|
7月前
|
存储 网络协议 Linux
【Azure Container App】Debug Console的调试工具试验(二)-- lsof/ util-linux / netcat / wget
本文续讲Azure Container App Debug Console调试工具试验,详解lsof(端口/文件句柄排查)、util-linux(dmesg/mount/df等系统诊断)、netcat(网络连通性测试)及wget(HTTP端点验证)四大工具的实战用法与典型场景,助力高效排障。
423 8
|
6月前
|
人工智能 监控 网络协议
【App Service】常规排查 App Service 启动 Application Insights 无数据的步骤 (.NET版本)
本文详解Application Insights在Azure App Service中无日志数据的三大原因及排查方法:1)网络连通性(验证到AI端点的443端口访问);2)w3wp.exe进程是否成功加载AI模块;3)DLL冲突(检查并移除重复的Microsoft.ApplicationInsights等组件)。
278 10
|
7月前
|
人工智能 搜索推荐 Linux
OpenClaw(Clawdbot)阿里云+本地部署,零成本搭建私人AI管家+多平台接入每天省8小时
很多人在用ChatGPT时都会陷入两难:功能强大但需要付费、翻墙,还不能直接连接微信等常用平台,更无法实现定时提醒、自动执行代码等个性化需求。而OpenClaw(曾用名Clawdbot、Moltbot)的出现,彻底解决了这些痛点——它是一款开源AI智能体框架,相当于给AI装上了“实体”,能连接微信、Discord等平台,支持联网搜索、代码执行、定时任务,只要有一台服务器,就能24小时免费为你工作。
928 1
|
3月前
|
人工智能 Go
【Azure AI】Work smarter in 90 days: A real-world guide to using AI / 90 天内更⾼效地⼯作:⼀本关于使⽤ AI 的实⽤指南 [逐句翻译版] 【转】
《开放工作:如何在人工智能时代取得进步》提供90天AI赋能职业发展蓝图:第1-30天夯实基础,用AI提效;31-60天强化好奇心、创造力等五大人类核心能力;61-90天规划进阶路径。附实用Copilot提示与分步实践指南。
226 3
|
9月前
|
人工智能 前端开发 测试技术
Violit: Streamlit杀手,无需全局刷新,构建AI快捷面板
Violit 是新一代 Python Web 框架,融合 Streamlit 的简洁语法与 React 的响应式性能。首创 O(1) 信号状态架构,零重运行、无需 `@cache`/`key`/回调,支持桌面原生应用与 30+ 主题,开箱即用、极速如光。
745 15
|
3月前
|
容器
【Azure Container App】Key Vault的Secret修改导致Container App重启,是否有办法规避呢?
本文解析Container App因Key Vault密钥更新自动重启的原因:当环境变量引用的密钥(未指定版本)更新时,系统会触发RevisionRestartWithNewSecrets事件,在30分钟内自动重启以获取最新值。建议指定密钥版本以手动控制更新时机,避免非预期滚动重启。
147 2
|
3月前
|
容器
【Azure Container Apps】Readiness Probe 配置了 15 秒,为什么日志里仍显示 1 秒超时?
排查Container App就绪探针超时问题时,发现日志显示“timeout in 1 second”,但配置了15秒超时。根本原因是Consumption模式下`TimeoutSeconds`不可大于`PeriodSeconds`,否则配置不生效。需确保`TimeoutSeconds ≤ PeriodSeconds`。
139 0
|
7月前
|
人工智能 安全 索引
【Azure AI Search】AI Search的索引器(Indexer)中使用解码函数base64Decode报错
Azure AI Search索引器使用base64Decode时失败,因默认启用URL安全解码(useHttpServerUtilityUrlTokenDecode=true),而源数据为标准Base64编码。解决方案:在mappingFunction中显式设置`&quot;useHttpServerUtilityUrlTokenDecode&quot;: false`,即可正确解码。
281 6