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

PgBouncer连接PostgreSQL出现tlsv1 alert unknown CA错误排查求助

PgBouncer 对接 PostgreSQL SSL 连接证书验证问题解答

问题2:错误发起方是PostgreSQL还是PgBouncer?

错误发起方是PostgreSQL。PgBouncer日志里的tlsv1 alert unknown ca是它收到PostgreSQL返回的TLS层警告;PostgreSQL自身日志的could not accept SSL connection: certificate verify failed直接说明,是PostgreSQL在验证PgBouncer的客户端证书时,无法识别签发该证书的CA,导致连接被拒绝。

问题1:同一CA签发仍报错的原因

虽然双方证书由同一Intermediate CA签发,但以下几个细节疏漏会导致验证失败:

  • PostgreSQL信任链不完整:如果PostgreSQL的ssl_ca_file只配置了Root CA证书,而没有包含Intermediate CA证书,PostgreSQL无法通过Root CA直接验证Intermediate CA的合法性,自然也不认由它签发的PgBouncer证书。需要将Root CA和Intermediate CA的证书内容合并成一个文件(顺序不限),替换PostgreSQL当前的ssl_ca_file。
  • PgBouncer未发送完整证书链:如果PgBouncer的server_tls_cert_file仅包含自身的证书,没有附带Intermediate CA证书,PostgreSQL收到证书后无法追溯到自己信任的Root CA。需要把PgBouncer的证书和Intermediate CA证书合并成一个文件(先放自身证书,再放Intermediate CA),作为server_tls_cert_file的内容。
  • 证书文件权限问题:K8s中挂载的证书文件如果权限不符合要求(比如PostgreSQL/PgBouncer进程无法读取,或者权限过宽被系统判定不安全),会导致证书加载失败。确保证书文件权限为600,所属用户与进程运行用户一致。
  • 证书用途不匹配:PgBouncer作为客户端连接PostgreSQL,其证书需要包含客户端认证(clientAuth)的扩展用途。如果签发证书时未配置这个用途,PostgreSQL会拒绝该证书。
  • PostgreSQL连接规则限制:检查PostgreSQL的pg_hba.conf,如果对应PgBouncer的连接规则设置了hostssl ... cert,则强制要求验证客户端证书,此时任何证书链或配置的问题都会触发验证失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 04:50:28