Kong网关配置自定义SSL证书后访问仍加载默认证书问题求助
Kong自定义SSL证书不生效原因及修复方案
核心原因
- TLS握手阶段未传递正确SNI:你当前使用IP地址发起HTTPS请求,大部分版本的
curl默认不会在TLS Client Hello阶段携带SNI信息,而你设置的Host: testkong.com是HTTP层的请求头,生效时间晚于TLS握手。Kong在TLS握手阶段无法拿到匹配的SNI,只能返回默认的自签名证书。 - 证书未绑定到对应工作区:如果你的Kong开启了多工作区配置,需要确认你创建的SSL证书和服务、路由处于同一个工作区,跨工作区的资源默认不互通。
- 证书创建参数错误:需要确认你调用Admin API创建证书时返回了201创建成功响应,且证书的
snis字段确实包含testkong.com,证书和私钥的格式没有缺失、换行符转义错误等问题。
验证及修复方案
- 优先验证SNI传递问题,使用指定SNI的curl命令发起请求:
# 方案1:使用--resolve参数绑定域名和IP端口映射 curl -v --insecure --resolve testkong.com:31966:100.73.66.21 https://testkong.com:31966/app/list/test5 # 方案2:使用--connect-to参数指定连接规则 curl -v --insecure --connect-to testkong.com:443:100.73.66.21:31966 https://testkong.com/app/list/test5
如果以上命令返回的是你自定义的证书,即可确认是SNI未传递导致的问题,后续请求直接使用绑定了hosts的域名访问即可正常加载自定义证书。
2. 如果执行上述命令还是返回默认证书,调用Admin API查询证书列表确认配置:
curl http://100.73.66.21:32763/certificates
检查返回结果中是否存在你配置的证书,且snis字段匹配testkong.com。
3. 如果开启了多工作区,创建证书时需要在请求头指定对应工作区:
curl -X POST http://100.73.66.21:32763/certificates \ -H "Kong-Workspace: 你的工作区名称" \ --data "key=你的私钥内容" \ --data "cert=你的证书内容" \ --data "snis[]=testkong.com"
内容的提问来源于stack exchange,提问作者favor ziyi
相关产品推荐
相关产品推荐

