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

如何在Kubernetes中覆盖Kong Gateway默认证书?Kong 2.7 SSL证书配置失败求助

解决Kong 2.7 SSL证书配置错误的方案

你遇到的错误本质是curl命令没有正确读取证书和密钥文件的内容,而是把文件名作为字符串传递给了Kong Admin API,导致Kong无法解析出有效的X509证书和私钥。下面分两种方式帮你解决问题:

一、修正Admin API调用的curl命令

你的原命令中,-F "cert=kong.lan.pem"会把字符串kong.lan.pem作为证书内容发送,而不是读取文件里的实际证书数据。需要在文件名前加@符号,告诉curl读取文件内容:

curl -X POST http://kong-admin:8001/certificates \
  -F "cert=@kong.lan.pem" \
  -F "key=@kong.lan.key" \
  -F "snis[0]=mydomain.net"

执行前请确保:

  • kong.lan.pem和kong.lan.key文件在当前执行curl命令的目录下,或者使用绝对路径(比如@/path/to/kong.lan.pem)
  • 证书和密钥本身是有效的,可以用以下命令验证:
    # 验证证书格式
    openssl x509 -in kong.lan.pem -text -noout
    # 验证私钥格式
    openssl rsa -in kong.lan.key -check
    

如果以上命令报错,说明证书/密钥本身损坏,需要重新生成正确的文件。

二、通过Helm Chart配置证书(推荐,更符合K8s部署规范)

因为你是用Helm部署的Kong,更推荐通过Kubernetes Secret+Helm Values的方式配置证书,这样证书会被安全挂载到Kong Pod中,且配置持久化:

步骤1:创建存储证书的Kubernetes Secret

使用K8s内置的TLS Secret类型存储证书和密钥:

kubectl create secret tls kong-tls-cert \
  --cert=kong.lan.pem \
  --key=kong.lan.key

步骤2:更新Helm部署配置

如果是新安装Kong,可以直接在install命令中添加TLS配置参数:

helm install kong/kong --generate-name \
  --set ingressController.enabled=true \
  --set admin.enabled=True \
  --set admin.http.enabled=True \
  --set ingress.enabled=True \
  --set proxy.ingress.enabled=True \
  --set admin.type=LoadBalancer \
  --set proxy.type=LoadBalancer \
  --set proxy.tls.enabled=true \
  --set proxy.tls.secret=kong-tls-cert \
  --set proxy.tls.snis[0]=mydomain.net

如果Kong已经安装,使用helm upgrade更新配置:

# 先查看你的Kong release名称:helm list
helm upgrade <your-kong-release-name> kong/kong \
  --set proxy.tls.enabled=true \
  --set proxy.tls.secret=kong-tls-cert \
  --set proxy.tls.snis[0]=mydomain.net

参数说明

  • proxy.tls.enabled=true:开启Proxy的TLS功能
  • proxy.tls.secret=kong-tls-cert:指定刚才创建的Secret名称,Kong会自动挂载该Secret中的证书和密钥
  • proxy.tls.snis[0]=mydomain.net:配置证书对应的SNI域名

验证配置是否生效

配置完成后,可以通过以下方式验证:

  1. 调用Admin API查看证书:
curl http://kong-admin:8001/certificates
  1. 访问Proxy的HTTPS端口(默认443),验证证书是否生效:
curl -v https://<kong-proxy-ip> -H "Host: mydomain.net"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 10:04:06