这是使用最新的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攻击的保护是强制性的!
答案 0 :(得分:2)
回答我自己的问题,我做的一切都是正确的。我唯一遗漏的是检查Postgres SSL证书是否从正确的文件中读取(/etc/postgresql/9.4/main/postgresql.conf)。
我现在可以成功Ping了