【发布时间】:2015-03-31 03:20:53
【问题描述】:
这是使用最新的 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 和中间版本在 glassfish 域/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 攻击!
【问题讨论】:
标签: java postgresql jdbc glassfish glassfish-4