2012-06-28 135 views
3

我有三個基於Java的Web應用程序app1,app2和app3在生產。所有3個都通過了驗證的CA的驗證,並託管在3個不同的Web服務器 和https上。 app1,app2通過安全trust.app3驗證通過trustwave驗證。javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路徑構建失敗:

下面是證書的證書層次結構,我可以看到當我通過網絡瀏覽器打開這些應用程序中的任何一個時。

APP1,APP2證書hirerarchy是相同.E

Entrust.net Secure Server Certification Authority---> SecureTrust CA------->*.myAppDomain.com 

APP3證書hirerarchy是

  Entrust.net Secure Server Certification Authority---> SecureTrust CA------->TrustWave Organization Validation CA, L------->*.myApp3.com 

現在,當APP1連接到APP 2,做工精細。但是,當APP1連接到APP3變得異常下面

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: 
    sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 

現在我對Web服務器託管APP1裏面JDK CACERT文件(即信任店)看看。我試圖找到Entrust,SecureTrust,TrustWave的條目,但只發現了像entrustevca,entrust2048ca等條目。所以,如果我按照邏輯推斷,如果根證書(它是應用程序app2和app3的Entrust)位於信任存儲區聯繫應用程序(app3),我可以在app3上看到cacert文件,然後當app1嘗試通過httpsURLConnection與app3聯繫時,我不應該得到上述錯誤。 我不知道這個原因?我不確定我們是否也需要包含trustwave,儘管根證書即Entrust已經在那裏內部驗證了trustwave?

如果我需要在CACERT文件(APP 2使用)上APP3然後通過這個邏輯我也應該inlcude在CACERT文件 securetrust(由APP 2使用)上APP3 trustwave證書,但它工作正常?

回答

3

客戶端的信任庫不信任服務器的證書。因此,客戶端的信任庫中沒有可信任的CA證書與服務器提供的證書鏈中的任何內容匹配。所以證書鏈不完整。您需要輸入您已由CA提供的所有內容到服務器的密鑰存儲區。

+0

嗨EJP。當你說「客戶的信任庫不信任服務器的證書」。希望你的意思是webserver作爲客戶端而不是web瀏覽器作爲客戶端因爲當我在任何瀏覽器中點擊相同的網址時,它會爲證書提供任何警告或例外而獲得成功。根據我的理解,它正在發生,因爲我可以在瀏覽器受信任的根證書中找到Entrust.net安全服務器證書頒發機構的條目。 –

+0

您還說過的另一點是「所以客戶端的信任庫中沒有可信任的CA證書與服務器提供的證書鏈中的任何內容匹配。」但是我可以在app1的cacert文件中找到entrustevca,entrust2048ca,其他委託相關條目[app3使用的根證書]的條目。所以當app1聯繫app3時,它不應該拋出異常。對? –

+0

我的意思是您的應用程序中的任何元素是相關事務中的客戶端。當然這很明顯。如果服務器提供的鏈中存在由客戶端的信任庫所信任的證書,則不會得到此異常。埃爾戈沒有。 – EJP

相關問題