Mit*_*tch 8 postgresql openssl
我正在尝试使用来自s_client
XP 上OpenSSL 的 SSL 连接到 AWS 上的 PostgreSQL 服务器。我可以使用这个连接到第三方s_client
。在服务器和 XP 上,我都使用 openssl 版本 0.9.8.k。
当我尝试连接到我的服务器时,我得到了结果:
CONNECTED(00000003)
2036:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:188
:
在 Postgres 日志中,我看到了以下条目:
2009-10-30 13:58:08 UTC LOG: invalid length of startup packet
我很感激任何关于在哪里寻找让这个工作的建议。也许有一个公共 AWS 映像我可以查看已知可以在哪个 PostgreSQL 上工作?
miv*_*ivk 15
您没有说明为什么要使用s_client。
如果是与数据库交互,任何像样的客户端都可以。psql
可以用sslmode=require
选项调用。见man psql
。
如果是检查 SSL 证书(这就是我遇到您的问题的原因),正如马格努斯 7 年前指出的那样,它仍然不适用于s_client。openssl s_client
如果您的版本 >= 1.1.1,您现在可以使用它,正如 Adam Batkin 的回答中所指出的那样。使用openssl version
检查,或者干脆直接试试这个命令来查看它是否工作。
echo "" | openssl s_client -starttls postgres -connect EXAMPLE.COM:5432 -showcerts
Run Code Online (Sandbox Code Playgroud)
如果你有一个不支持 postgres 的旧版本,这个 python 脚本也可以检索 SSL 证书:https : //github.com/thusoy/postgres-mitm/blob/master/postgres_get_server_cert.py
例如检查证书日期:
postgres_get_server_cert.py example.com:5432 | openssl x509 -noout -dates
Run Code Online (Sandbox Code Playgroud)
小智 9
看起来 OpenSSL 的s_client
工具在 1.1.1 中添加了 Postgres 支持-starttls
,因此您现在可以使用 OpenSSL 命令行工具的全部功能,而无需额外的帮助程序脚本:
> openssl s_client -starttls postgres -connect my.postgres.host:5432 # etc...
Run Code Online (Sandbox Code Playgroud)
参考:
您不能使用s_client。PostgreSQL在SSL 启动之前进行协议协商(以确定它是否应该进行 SSL,因为它们都运行在同一个端口上)。您需要使用合适的 PostgreSQL 客户端(例如psql或pgadmin),而不是s_client。
归档时间: |
|
查看次数: |
8331 次 |
最近记录: |