Azure APIM自建网关如何处理自签名证书不被信任问题?

摘要:问题描述 在先前的四篇博文 1:【Azure APIM】APIM的自建网关如何解决自签名证书的受信任问题呢?(方案二) 2:【Azure APIM】APIM的自建网关如何解决自签名证书的受信任问题呢?(方案一) 3:【Azure APIM】
问题描述 在先前的四篇博文 1:【Azure APIM】APIM的自建网关如何解决自签名证书的受信任问题呢?(方案二) 2:【Azure APIM】APIM的自建网关如何解决自签名证书的受信任问题呢?(方案一) 3:【Azure APIM】如何解决后端API服务配置自签名证书时APIM请求报错500:Error occured while calling backend service 4:【Azure 环境】在Windows环境中使用OpenSSL生成自签名证书链步骤分享 我们分别介绍了使用OpenSSL生成自签名证书,然后解决APIM服务对自签名证书的信任问题。不论是APIM托管的网关,还是自建的网关都可以通过安装证书后使得请求受信任,通过配置API跳过证书验证环节。 本文这从“自建网关本身AKS POD” 方面入手,通过配置 SSL_CERT_FILE 环境变量,来安装自签名证书 (根证书和中间证书)到POD中。 经过AI大模型解答,在AKS (Azure Kubernetes Service) 中访问使用自签名证书的 API,关键在于让客户端信任该证书,主要的思路是: 创建包含 CA 证书的 Secret 将自签名的 CA 证书文件 (例如 ca.crt) 导入到 AKS 集群 在应用部署的 YAML 文件中,将该 Secret 挂载到容器内,并设置 SSL_CERT_FILE 环境变量指向该证书 操作步骤 第一步:准备好中间证书和根证书合并一起的 .crt 内容 导出方法:通过浏览器导出中间证书+根证书的 crt 文件,其内容是 Base64 编码 第二步:创建Kubernetes Secret 将自签名的 CA 证书文件 (例如 my-inetr-ca.crt) 导入到 AKS 集群中: 命令: kubectl create secret generic self-signed-ca --from-file="<the full path of my-inetr-ca.crt>" 结果: 第三步:在APIM的自建网关Pod中挂载证书 在应用部署的 YAML 文件中,将该 Secret 挂载到容器内,并设置 SSL_CERT_FILE 环境变量指向该证书 ... volumeMounts: - name: ca-volume mountPath: /etc/ssl/certs/my-ca.crt subPath: my-inetr-ca.crt env: - name: SSL_CERT_FILE value: /etc/ssl/certs/my-ca.crt ... volumes: - name: ca-volume secret: secretName: self-signed-ca ... 把从APIM获取的部署yaml内容,只修改如图中的三个位置,即可。 第四步:部署以上配置,后访问AKS Service External URL进行测试验证 # 部署 kubectl apply -f "<apim self-hosted gateway yaml file>" #获取对外暴露的IP地址 kubectl get services ##测试访问自建网关中的API curl https://<external ip>/api -k 测试结果,成功通过证书验证及获取正确的结果: 如果没有配置SSL_CERT_FILE 及挂载证书,就会遇见500Internal server error。
阅读全文