为啥 postgres 强制 sslmode=verify-full 虽然它不在连接字符串中

Posted

技术标签:

【中文标题】为啥 postgres 强制 sslmode=verify-full 虽然它不在连接字符串中【英文标题】:Why postgres forced sslmode=verify-full though it it not there in the connection string为什么 postgres 强制 sslmode=verify-full 虽然它不在连接字符串中 【发布时间】:2019-11-18 10:37:17 【问题描述】:

我已从仍在运行服务的连接字符串中删除了 sslmode=verify-full,它采用 sslmode=verify-full。我制作了 ssl=true 但删除了 sslmode。是在有效的连接字符串中还是有什么其他需要做的?

这是我的网址:

url="jdbc:amazon:postgresql://$apollo.OCF.FTPayDatabase.dbHost:$apollo.OCF.FTPayDatabase.dbSock/$apollo.OCF.FTPayDatabase.dbname?ssl=true;sslrootcert=/apollo/env/RhythmTomcatBase/certs/rds-combined-ca-bundle.pem"

【问题讨论】:

它是documented behaviour: "最简单的是 ssl=true,将它传递给驱动程序将导致驱动程序验证 SSL 证书并验证主机名(与 verify-满)。” 【参考方案1】:

添加

sslfactory=org.postgresql.ssl.NonValidatingFactory

到您的 JDBC URL。这在the documentation 中有介绍。

【讨论】:

以上是关于为啥 postgres 强制 sslmode=verify-full 虽然它不在连接字符串中的主要内容,如果未能解决你的问题,请参考以下文章

通过 JDBC 连接到 postgres 服务器时 sslmode 参数的默认值?

如何强制 Postgres 使用特定索引?

Postgres:删除属于特定角色的所有表(或强制删除角色,忽略依赖对象)

如何强制 postgres docker 容器从新数据库开始

Perl/Postgresql:未编译 SSL 支持时,sslmode 值“require”无效

Postgres:强制分析器使用位图扫描而不是索引扫描