database - 如何让 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
知道我做错了什么吗?
解决方案
解决了。事实证明,我需要在“服务器”上的证书文件中添加完整的信任链。
我使用了 comodo 90 天证书而不是让加密证书。
现在我在“服务器”上布置了 server.crt
新发行的 comodo 证书在上面。
2 comodo 中级证书。
根comodo证书
我用这个工具来检查我的链接。https://tools.keycdn.com/ssl
推荐阅读
- algorithm - 什么算法会对节点进行排序以创建最少数量的交叉连接线?
- java - 得到
当尝试从连接中检索数据时 - python - 如何在 IBM WATSON CHAT BOT 中从客户端运行 Python 程序
- google-apps-script - 如何在下面的 Google 表格代码中的时间戳中添加“CST”时区?另外,它会知道夏令时吗?
- javascript - 如何在 mouseleave 上删除数据集
- google-maps - 启用哪个 Google Maps API 以使 http 开始工作
- spring - Spring Batch 分区不起作用复合项目处理器
- python - Crystal Reports 中的 Python 字符串或布尔值 - 如何格式化报表中的标题
- linq - 使用 linq 从 IdentityUser 列表中检索自定义配置文件数据
- procrun - 如何通过退出代码使用 Procrun 自动重启 Java 应用程序