连接 Postgres Db 时出错:服务器证书与主机名不匹配

Error When Connecting Postgres Db: Server Certificate Does Not Match Host Name

我在 Centos 8 VM 上安装了 Postgresql 13,试图了解如何使用 ssl 建立安全连接。虽然完成了大部分步骤并创建了服务器和客户端证书,但我无法通过 PgAdmin 使用 verify-full SSL 模式远程连接到我的数据库。它给出了这样的错误:

server certificate for "centosnew" does not match host name "192.168.1.153"

“centosnew”是数据库的主机名,192.168.1.153 是它的 IP 地址。但是,当我将 SSL 模式更改为 verify-carequire 模式时,我可以连接 PgAdmin.Where 我做错了吗?

编辑:我客户的地址在 pg_hba.conf 看起来像这样:

hostssl    all             all             192.168.1.165/32        cert

谢谢

在您的服务器证书中,IP 列表似乎不包含 ip 192.168.1.153。确保在创建服务器证书时已将 Ip 添加到它将侦听的位置。您可以使用此 link 粘贴您的证书以在此处解码。

检查证书列表中是否包含 IP

在您的 CommonName 中也添加 IP。

正如错误信息所说,服务器的证书是给“centosnew”的,它与你告诉它连接的主机名“192.168.1.153”不同。因此,就 SSL 证书而言,您连接到的服务器不是您要求的服务器。因为防止这是“验证完整”的全部要点,所以如果它让你这样做就很奇怪了。

因此,与其告诉它连接到主机“192.168.1.153”,不如告诉它连接到主机“centosnew”,并让 DNS 完成它的工作。

我通过将数据库服务器的名称添加到客户端计算机中的“hosts”文件来修复它。