【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




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

相关文章
|
2月前
|
机器学习/深度学习 移动开发 人工智能
大模型应用:庖丁解牛:QKV机制详解,大模型的注意力之眼.4
QKV机制是Transformer注意力的核心:Query(提问)、Key(标识)、Value(信息)三者通过点积计算相似度,Softmax归一化后加权融合Value,实现动态上下文感知。它能捕捉长程依赖,解决代词消解、一词多义等问题,支撑大模型强大语言理解能力。
621 7
|
2月前
|
人工智能 运维 监控
进阶指南:BrowserUse + AgentRun Sandbox 最佳实践
本文将深入讲解 BrowserUse 框架集成、提供类 Manus Agent 的代码示例、Sandbox 高级生命周期管理、性能优化与生产部署策略。涵盖连接池设计、安全控制、可观测性建设及成本优化方案,助力构建高效、稳定、可扩展的 AI 浏览器自动化系统。
601 47
|
2月前
|
Kubernetes 应用服务中间件 API
应对 Nginx Ingress 退役,是时候理清这些易混淆的概念了
本文希望提供一种更简单的方式,来理解这些容易混淆的技术概念:Nginx、Ingress、Ingress Controller、Ingress API、Nginx Ingress、Higress、Gateway API。
1111 87
|
3天前
|
人工智能 安全 Serverless
让 AI Agent 安全“跑”在云端:基于函数计算打造 Agent 代码沙箱
Agent 代码沙箱是保障 AI 智能体安全执行的核心基础设施。依托函数计算构建强隔离、有状态、低成本的 AI 运行时。
|
16天前
|
JSON 缓存 API
美股实时行情与 K 线数据对接
本文详解如何用StockTV全球金融API快速接入美股实时行情、K线、指数及IPO等数据,支持NYSE/NASDAQ双交易所,提供REST/WS低延迟接口,涵盖个股、指数、涨跌榜等全场景,助开发者高效构建全球资产配置工具。(239字)
|
1月前
|
JSON Java 数据格式
Feign 复杂对象参数传递避坑指南:从报错到优雅落地
本文深入剖析了SpringCloud Feign在复杂对象参数传递中的常见问题及解决方案。文章首先分析了GET请求传递复杂对象失败的底层原因,包括HTTP规范约束和Feign参数解析逻辑。针对GET场景,提供了四种解决方案:@SpringQueryMap(首选)、手动拆分属性+@RequestParam、MultiValueMap封装和自定义FeignEncoder,详细比较了各方案的优缺点和适用场景。对于POST场景,推荐使用@RequestBody注解传递JSON请求体。
513 6
|
2月前
|
人工智能 缓存 安全
探秘 AgentRun丨动态下发+权限隔离,重构 AI Agent 安全体系
函数计算AgentRun提供双向凭证管理:入站控制“谁可调用”,出站保障“调用谁”的安全。支持动态更新、加密存储、本地缓存与自动注入,杜绝硬编码与泄露风险,无需重启服务。让开发者专注业务,安心落地AI Agent。
|
4天前
|
人工智能 弹性计算 运维
从ChatGPT被禁到OpenClaw预警:阿里云开发者如何安全选型AI产品
本文剖析ChatGPT与OpenClaw在阿里云环境中的安全风险,揭示AI选型中“安全合规、生态适配、可控可溯”远比“零成本”重要;并推介玄晶引擎AI数字员工——专为阿里云深度优化的安全可控方案,支持沙箱运行、本地闭环、一键部署及200+云服务集成,助力开发者高效、安心落地AI。
109 1