首页 > 解决方案 > 如何让 Postgres 使用受信任的 SSL 证书对另一个 Postgres 数据库进行 dblink

问题描述

我在设置两个 postgres 服务器以使用 DBLink 通过受信任、经过验证的 SSL 进行通信时遇到问题。

我的设置:AWS 上使用 EC2 托管的 2x Windows Server 2016 一台计算机是“客户端”,另一台计算机是“服务器”在每台服务器上,我都有 Postgres 9.6。(通过 BigSQL Gui 安装程序安装)

我正在尝试让“客户端”通过 dblink 使用“服务器”执行“已验证、完整”SSL。

这是我设置的步骤。

“服务器” postgresql.conf 设置

ssl = on  
..
ssl_cert_file = 'server.crt'  # The cert that I got from SSLForFree.com
ssl_key_file = 'server.key'   # The private key that I got from SSLForFree.com

“服务器” pg_hba.conf 设置

# TYPE  DATABASE        USER            CIDR-ADDRESS            METHOD
# IPv4 local & remote connections:
host    all             all             127.0.0.1/32            trust
#host    all             all             0.0.0.0/0               md5
# IPv6 local connections:
host    all             all             ::1/128                 trust
hostssl     all     all     0.0.0.0/0  md5   # new

“客户端”计算机 我将 Let's Encrypt 根证书和 CA Bundle 放在此文件中。C:/PostgreSQL/data/pg96/root.crt

我在 PSQL 的“客户端”中运行的命令。

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);

我的错误

ERROR:  could not establish connection
DETAIL:  SSL error: certificate verify failed

知道我做错了什么吗?

标签: databasepostgresqlsslssl-certificate

解决方案


解决了。事实证明,我需要在“服务器”上的证书文件中添加完整的信任链。

我使用了 comodo 90 天证书而不是让加密证书。

现在我在“服务器”上布置了 server.crt

新发行的 comodo 证书在上面。

2 comodo 中级证书。

根comodo证书

我用这个工具来检查我的链接。https://tools.keycdn.com/ssl


推荐阅读