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

如何使用GoDaddy证书为Nginx Ingress控制器创建Kubernetes Secret

Kubernetes TLS Secret创建报错修复方案

该报错error: tls: failed to find any PEM data in key input核心原因为私钥文件不符合Kubernetes要求的PEM格式规范,可按照以下步骤排查修复:

1. 修复私钥格式与有效性

  • 首先检查generated-private-key.txt内容:标准PEM私钥必须以-----BEGIN PRIVATE KEY-----/-----BEGIN RSA PRIVATE KEY-----开头,以对应的-----END PRIVATE KEY-----/-----END RSA PRIVATE KEY-----结尾,中间为无多余空格、换行、特殊字符的base64编码内容,需移除文件中所有GoDaddy附带的说明文字。
  • 如果私钥开头为-----BEGIN ENCRYPTED PRIVATE KEY-----,说明是加密私钥,需要先解密:
    openssl rsa -in generated-private-key.txt -out tls.key
    
  • 验证私钥有效性:
    openssl rsa -in tls.key -check
    
    执行返回RSA key ok则私钥本身有效,否则说明私钥文件损坏,需要重新从GoDaddy原始邮件下载,不要手动复制粘贴内容避免引入多余字符。
  • 修复换行符编码问题:如果私钥是在Windows系统下下载/编辑过,执行命令转换换行符格式:
    dos2unix tls.key
    

2. 验证证书链与私钥的匹配性

  • 确认证书拼接顺序正确,必须先放域名证书,再放GoDaddy中间证书:
    cat xxxx.crt gd_bundle-g2-g1.crt > chain.crt
    
  • 验证证书和私钥匹配,两条命令返回的MD5值必须完全一致:
    openssl x509 -noout -modulus -in chain.crt | openssl md5
    openssl rsa -noout -modulus -in tls.key | openssl md5
    
    如MD5值不匹配,说明你下载的证书和当前私钥不是对应 pair,需要确认下载证书时选择的CSR和生成该私钥的CSR为同一个。

3. 重新创建TLS Secret

所有验证通过后执行创建命令:

kubectl create secret tls organization-tls --key tls.key --cert chain.crt

创建成功后可执行命令查看Secret是否正常:

kubectl get secret organization-tls -o yaml

4. Ingress配置验证

确认Ingress资源中正确引用该Secret,配置示例:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: your-ingress
spec:
  tls:
  - hosts:
    - 你的域名
    secretName: organization-tls
  rules:
  - host: 你的域名
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: 你的业务服务名
            port:
              number: 服务端口

配置更新后等待Nginx Ingress控制器重载即可生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:45:04