You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Kubernetes Service中Ingress资源的TLS证书续期故障排查

Ingress SSL证书续期失败排查与解决

问题背景

Ingress配置的DigiCert SSL证书已过期,尝试两种续期方案均未生效:

  • 方案1:用现有TLS Secret里的私钥搭配新证书
  • 方案2:生成新私钥+CSR,从DigiCert获取新证书

操作流程为:

  1. 生成新私钥和CSR:
    openssl req -new -newkey rsa:2048 -nodes -keyout kula-work.key -out kula.work.csr
  2. 提交CSR到DigiCert获取证书
  3. 用新证书+私钥创建TLS Secret
  4. Ingress引用新Secret后报错

必查排查点(按优先级)

1. 验证证书与私钥是否配对

这是最常见的问题,执行以下命令对比指纹:

# 提取私钥公钥指纹
openssl rsa -noout -modulus -in kula-work.key | openssl md5
# 提取证书公钥指纹
openssl x509 -noout -modulus -in kula-work.crt | openssl md5

要求两个输出完全一致,不一致说明证书和私钥不配对——要么是提交CSR时用错了私钥,要么是DigiCert下发的证书对应其他CSR。

2. 检查证书链是否完整

DigiCert的证书必须包含服务器证书+中间证书+根证书,仅用单独的服务器证书会导致Ingress控制器/客户端不信任。

  • 从DigiCert官网下载对应证书链(比如「DigiCert Global Root CA」+「Intermediate CA」)
  • 按顺序合并为完整证书链文件:
cat kula-work.crt DigiCertCA.crt TrustedRoot.crt > fullchain.crt

创建Secret时必须用这个fullchain.crt,而非单独的服务器证书。

3. 确认TLS Secret创建规范

创建Kubernetes TLS Secret时,需指定完整证书链和私钥,且确保和Ingress在同一命名空间:

kubectl create secret tls kula-work-tls \
  --cert=fullchain.crt \
  --key=kula-work.key \
  --namespace=你的命名空间

如果之前创建过同名Secret,需先删除再重建:

kubectl delete secret kula-work-tls -n 你的命名空间

4. 校验Ingress配置正确性

确保Ingress的tls段引用的Secret名称、命名空间完全匹配:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: kula-work-ingress
  namespace: 你的命名空间
spec:
  tls:
  - hosts:
    - kula.work
    secretName: kula-work-tls  # 与创建的Secret名称一致
  rules:
  - host: kula.work
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: 你的业务服务名
            port:
              number: 80

更新Ingress后,手动触发Ingress控制器重载(以NGINX为例):

kubectl rollout restart deployment nginx-ingress-controller -n ingress-nginx

5. 错误翻译与对应解决

如果截图中的英文错误是:

  • x509: certificate signed by unknown authority → 翻译:「x509:证书由未知颁发机构签名」→ 对应证书链不完整问题
  • key and certificate do not match → 翻译:「密钥与证书不匹配」→ 对应证书私钥配对失败问题
  • secret "kula-work-tls" not found → 翻译:「找不到Secret 'kula-work-tls'」→ 对应Secret命名空间或名称错误问题

推荐的续期最优流程

续期时无需生成新私钥,用原有私钥生成CSR提交给DigiCert即可,避免私钥变更带来的风险:

# 用旧私钥生成续期CSR
openssl req -new -key 旧私钥文件.key -out kula-work-renew.csr

后续流程同前:提交CSR→获取证书→合并证书链→创建Secret→更新Ingress

内容的提问来源于stack exchange,提问作者Oluwafemi Aina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 17:00:35