使用OpenSSL s_client使用SSL连接到PostgreSQL

我正尝试使用来自XP上的OpenSSL s_client 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

我很感激任何有关在哪里可以得到这个工作的build议。 也许有一个公共的AWS镜像,我可以看看在哪个PostgreSQL已知的工作?

你不能使用s_client 。 PostgreSQL SSL启动之前进行协议协商(以确定它是否应该执行SSL,因为它们都在同一个端口上运行)。 您需要使用适当的PostgreSQL客户端(例如psqlpgadmin ),而不是s_client

你没有指定为什么你想使用s_client

如果要与数据库交互 ,任何体面的客户端都会这样做。 可以使用sslmode=require选项调用psql 。 见man psql

如果是检查SSL证书 (这就是为什么我遇到你的问题),它仍然不能像马格努斯7年前指出的s_client

但是,我发现这个python脚本可以检索SSL证书: https : //github.com/thusoy/postgres-mitm/blob/master/postgres_get_server_cert.py

例如查看证书date:

 postgres_get_server_cert.py example.com:5432 | openssl x509 -noout -dates