JDBC连接池SSL错误PKIX构建失败

时间:2015-01-31 20:50:41

标签: java postgresql jdbc glassfish glassfish-4

这是使用最新的Glassfish(4.1),针对Postgres 9.4的最新Postgres驱动程序(9.3-1102 JDBC 41)和最新的Java(1.8.0_31-b13)。

这也是使用商业CA证书,我检查了CA根目录是否存在于$ JAVA_HOME / jre / lib / security / cacerts中。为了更好的衡量,我还添加了中间证书。

我还验证了Root和middle在glassfish domains / domain1 / config / cacerts.jks

我收到的错误消息是:

  

发生了错误。 XXX的Ping连接池失败。无法分配连接,因为:SSL错误:sun.security.validator.ValidatorException:PKIX路径构建失败sun.security.provider.SunCertPathBuilderException:无法找到所请求目标的有效证书路径。

Postgresql日志显示以下内容:

LOG:  could not accept SSL connection: sslv3 alert certificate unknown

Glassfish server.log不会显示任何超出上述错误的内容。

如果我设置

  

sslfactory = org.postgresql.ssl.NonValidatingFactory

然后当然ping工作正常。但对于生产目的来说,这显然完全是完全不可接受的,因为对MITM攻击的保护是强制性的!

1 个答案:

答案 0 :(得分:2)

回答我自己的问题,我做的一切都是正确的。我唯一遗漏的是检查Postgres SSL证书是否从正确的文件中读取(/etc/postgresql/9.4/main/postgresql.conf)。

我现在可以成功Ping了