无法使用 PostgreSQL JDBC 驱动程序通过 SSL 连接

Posted

技术标签:

【中文标题】无法使用 PostgreSQL JDBC 驱动程序通过 SSL 连接【英文标题】:Cannot connect over SSL using PostgreSQL JDBC driver 【发布时间】:2021-07-01 02:05:37 【问题描述】:

我正在尝试通过 SSL(即 TLSv1.3)连接数据库。

使用psql 进行测试时,它通过 TLSv1.3 连接。

使用下面的 JDBC 驱动程序,由于某种原因,连接根本不受 SSL 保护。

(通过执行select * from pg_stat_ssl;确认这一点)

      val props = new Properties()
      props.setProperty("user", "postgres")
      props.setProperty("password", "example")
      props.setProperty("ssl", "true")
      props.setProperty("sslmode", "allow")
      props.setProperty("sslfactory", "org.postgresql.ssl.NonValidatingFactory")
      DriverManager.getConnection("jdbc:postgresql://localhost/", props)

这个问题的原因是什么?

PostgreSQL JDBC 驱动版本:42.2.5/42.2.22

【问题讨论】:

【参考方案1】:

如果您将sslmode 设置为allow,客户端将首选非加密连接。将设置更改为requireprefer

【讨论】:

以上是关于无法使用 PostgreSQL JDBC 驱动程序通过 SSL 连接的主要内容,如果未能解决你的问题,请参考以下文章

我无法在我的 macbook air m1 上安装 PostgreSQL 的 JDBC 驱动程序

出现错误:无法加载 JDBC 驱动程序类 [org.postgresql.Driver]

无法使用 Postgresql 将 JDBC 连接到 sonarqube

Android上的Postgresql JDBC连接错误

PostgreSQL 和 JDBC 使用 setArray 设置整数数组抛出异常“无法将类型整数 [] 转换为整数”

如何让 PostgreSQL DBLink 连接与 JDBC 一起使用?