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

如何让PostgreSQL通过dblink使用可信SSL证书连接另一PostgreSQL数据库

看起来你在配置跨服务器PostgreSQL SSL连接时碰到了证书验证的坑,我来帮你一步步排查可能的问题:

1. 检查服务器端证书链是否完整

SSLForFree(本质基于Let's Encrypt)颁发的证书通常需要中间CA证书才能让客户端完成完整的信任链验证。你当前服务器的server.crt可能只包含服务器证书本身,缺少必要的中间证书。

  • 解决方法:把SSLForFree提供的中间CA证书内容追加到server.crt文件末尾,确保整个证书链是连续的PEM格式(每段证书都以-----BEGIN CERTIFICATE-----开头,-----END CERTIFICATE-----结尾)。
  • 验证方式:在服务器上执行以下命令查看证书信息,确认"X509v3 Authority Key Identifier"指向的CA证书存在于你的证书链中:
    openssl x509 -in server.crt -text -noout
    

2. 确认证书域名与连接主机名匹配

当使用verify-ca或verify-full模式时,PostgreSQL会严格检查证书中的**通用名称(CN)或主题备用名称(SAN)**是否和你连接时指定的host(test.example.com)完全一致。

  • 检查方法:用上述openssl命令查看证书的"Subject"字段(CN值)和"X509v3 Subject Alternative Name"字段,确认其中明确包含test.example.com。
  • 如果域名不匹配,要么重新申请对应域名的证书,要么修改连接时的host参数为证书中正确的域名(注意要确保该域名能正常解析到服务器IP)。

3. 检查证书文件格式是否为PEM

PostgreSQL仅支持PEM格式的证书文件,如果你从SSLForFree下载的是DER格式(二进制)证书,会直接导致验证失败。

  • 转换方法:如果是DER格式,用OpenSSL命令转换成PEM:
    openssl x509 -in server.crt.der -inform der -out server.crt -outform pem
    
  • 验证:打开证书文件,应该能看到明文的证书标记,而非乱码内容。

4. 检查Windows环境下的文件权限

在Windows Server上,PostgreSQL服务运行账号(通常是NT SERVICE\postgresql-x64-9.6)需要对以下文件拥有读取权限:

  • 服务器端:server.crt、server.key所在的目录及文件本身
  • 客户端:root.crt所在的目录及文件本身
  • 操作方法:右键目标文件→属性→安全→编辑,添加PostgreSQL服务账号,赋予其"读取"权限。

5. 验证客户端root.crt的内容有效性

你将Let's Encrypt根证书和CA包放入root.crt,需要确保:

  • 根证书是Let's Encrypt的有效根CA(比如ISRG Root X1),而非已过期的旧根证书(比如DST Root CA X3)
  • 若服务器端已配置完整证书链,客户端root.crt只需包含根证书即可;若服务器端未配置中间证书,则需要将中间证书也加入root.crt
  • 可以在客户端执行以下命令,验证服务器证书是否能被root.crt信任:
    openssl verify -CAfile root.crt server.crt
    
    如果这一步失败,说明证书链存在问题,需要优先修复。

最后重启服务并测试

修改完配置后,务必重启PostgreSQL服务器端服务,然后重新执行dblink命令测试:

SELECT * FROM dblink(
  'dbname=postgres port=5432 host=test.example.com user=postgres password=123456 sslmode=verify-ca sslrootcert=C:/PostgreSQL/data/pg96/root.crt',
  'SELECT now()::TEXT;'
) AS t(a Text);

如果问题仍未解决,可以查看服务器端的PostgreSQL日志(通常在data/pg_log目录),里面会有更详细的SSL错误细节,帮助定位具体问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:52:21