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

如何在Kong中配置CA证书以解决“unable to verify the first certificate”错误?

问题解决:Kong SSL端点非浏览器客户端证书验证失败

核心原因

浏览器会自动尝试获取缺失的中间/根CA证书以完成信任链验证,但curl、Postman这类非浏览器工具不会主动执行该操作。因此必须让Kong在返回域名证书时完整发送整个信任链(域名证书+中间CA证书+根CA证书),而非仅发送域名证书。

正确配置步骤(Docker Compose环境)

1. 准备完整证书链文件

将域名证书、中间CA证书、根CA证书按指定顺序拼接为单个文件,顺序要求:

  • 第一部分:你的域名证书(通常命名为domain.crt)
  • 第二部分:中间CA证书(例如intermediate.crt)
  • 第三部分:根CA证书(例如root.crt)

注意:每个证书的-----BEGIN CERTIFICATE-----和-----END CERTIFICATE-----标记需完整保留,文件内不要存在多余空格或换行。最终保存为fullchain.crt。

2. 修改Docker Compose配置

无需使用KONG_SSL_CERT_CAFILE(该参数用于Kong作为客户端请求后端服务时的CA信任库,与对外提供SSL服务无关),需将Kong对外的SSL证书配置为上述完整链文件:

services:
  kong:
    image: kong:latest
    environment:
      # 保留原有其他配置
      KONG_SSL_CERT: /container/path/to/fullchain.crt  # 替换为容器内证书路径
      KONG_SSL_CERT_KEY: /container/path/to/domain.key # 替换为容器内域名私钥路径
    volumes:
      - ./local/certs/folder:/container/path/to/certs  # 将本地证书目录挂载到容器对应路径
    # 保留原有端口、网络等配置

3. 验证配置生效

重启Kong容器后,用openssl命令测试证书链完整性:

openssl s_client -connect your-kong-endpoint:443

查看输出中的Certificate chain部分,若能依次看到域名证书、中间CA证书、根CA证书的层级信息,说明配置生效,非浏览器工具可正常验证信任链。

无效操作说明

  • KONG_SSL_CERT_CAFILE:该参数是Kong作为客户端(如转发请求至后端HTTPS服务)时,用于验证后端证书的CA信任库,与对外提供SSL服务的证书链无关。
  • Kong Manager的「CA Certificates」:此处上传的CA证书用于验证客户端证书(双向SSL场景),不会被发送给请求客户端,因此无法补充服务端证书信任链。

官方配置参考

Kong官方文档中明确要求:服务端对外提供的SSL证书必须包含完整信任链,否则非浏览器客户端会因无法构建完整信任链报错。可在SSL配置章节重点查看ssl_cert参数的使用说明,其要求传入包含完整证书链的文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 19:11:12