2015-01-31 39 views
3

這是針對Postgres 9.4和最新的Java(1.8.0_31-b13)使用最新的Glassfish(4.1),最新的Postgres驅動程序(9.3-1102 JDBC 41)。JDBC連接池SSL錯誤PKIX構建失敗

這也是使用商業CA證書,我檢查過CA根存在於$ JAVA_HOME/jre/lib/security/cacerts中。爲了好的措施,我還添加了中間證書。

我還驗證根和中間是在GlassFish域/域1 /配置/ cacerts.jks

我收到的錯誤信息是:

An error has occured. Ping Connection Pool failed for XXX. Connection could not be allocated because: SSL error: sun.security.validator.ValidatorException: PKIX path building failed sun.security.provider.SunCertPathBuilderException: unable to find valid certification path to requested target.

PostgreSQL的日誌顯示以下內容:

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

Glassfish server.log沒有顯示比上述錯誤更多的內容。

如果我設置

sslfactory=org.postgresql.ssl.NonValidatingFactory

那當然平安工作正常。但是,對於生產目的來說,這顯然是完全和完全不可接受的,因爲在防範中間人攻擊毫無疑問是強制性的情況下!

回答

2

只是爲了回答我自己的問題,我一切正常。我唯一遺漏的是檢查Postgres SSL證書是否從正確的文件(/etc/postgresql/9.4/main/postgresql.conf)中讀取。我現在可以Ping成功