为什么 openssl s_client 无法获取我的 AWS postgres 终端节点的服务器证书?

问题描述 投票:0回答:1

我想检查我的 AWS RDS postgres 实例使用的服务器证书。我执行了以下命令。

openssl s_client -connect <db_domain_name>:5432 -showcerts

它给了我下面的输出,这表明该实例不提供证书。

CONNECTED(00000003)
140121607600016:error:140790E5:SSL routines:ssl23_write:ssl handshake failure:s23_lib.c:177:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 289 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
....
....

但是如果我尝试通过

psql
连接到数据库,它会显示它正在使用 SSL。

psql (9.2.24, server 13.7)
WARNING: psql version 9.2, server version 13.0.
         Some psql features might not work.
SSL connection (cipher: ECDHE-RSA-AES128-GCM-SHA256, bits: 128)
Type "help" for help.

postgres=>

在服务器不提供证书的情况下,psql 如何建立 SSL 连接?如果服务器确实提供了证书,为什么

openssl s_client
检索失败?

postgresql ssl openssl ssl-certificate
1个回答
0
投票

虽然 Postgres 使用 TLS,但它不会在连接时立即执行此操作,因为您的命令正在尝试;相反,它首先执行 Postgres 特定的协议,然后启动 TLS。许多其他协议也这样做。 OpenSSL

s_client
支持某些此类协议的
starttls
,但只有 1.1.1 以上版本包含 Postgres。获取最新的 OpenSSL 并使用
s_client -starttls postgres
。 – 戴夫_汤普森_085

© www.soinside.com 2019 - 2024. All rights reserved.