如何让Postgres使用Trusted SSL Certs对另一个Postgres数据库进行dblink

时间:2018-05-31 19:33:20

标签: database postgresql ssl ssl-certificate

我在设置两台postgres服务器时遇到问题,无法使用DBLink通过Trusted,Verified 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的加密根证书和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

知道我做错了吗?

1 个答案:

答案 0 :(得分:0)

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

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

现在,我在“服务器”

上布置了server.crt

新发布的comodo证书。

2个comodo中级证书。

根comodo证书

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