2015-10-26 59 views
0

我使用Java程序(使用HttpUrlConnection)向網站發送了http請求,並從那裏下載文件。將證書添加到Java信任庫和Sslhandshake

該網站是「https」並使用證書。

當我嘗試運行我的代碼,它很不以爲然:

cause 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 

我試圖去這個網站和我的瀏覽器(Mozilla的)。而當我檢查證書,有三個certificates.The網站包含這些證書。

DigiCert高保障EV根CA

-DigiCert高可信CA-3

-thecompanycert

而且我檢查我的密鑰工具trustsroe(由DigiCert高可信CA-3日)。信任庫只有根CA. 足夠了還是需要導入其他2個證書?或者只有 - thecompanycert?

將中間證書添加到java truststore的風險是什麼? 我必須這樣做嗎?

任何人都可以幫忙嗎?

+0

將完整的證書鏈導入到trustore –

回答

1

如果服務器配置正確,它應發送站點證書以及構建信任鏈所需的任何/所有中間證書。看起來你連接的網站沒有發送中間證書。

如果您是網站管理員,則可以更正此問題,而且您不必亂用Java客戶端信任庫。

如果您是最終用戶,則可以將中間證書添加到Java信任庫。您不需要添加站點證書。但是,請聯繫網站所有者並要求他們更正此問題。

幾天前我發佈了similar answer

+0

所以,你告訴我,如果我只向我的信任庫添加-DigiCert High Assurance CA-3,它將起作用嗎?我已經擁有根CA並且在添加中間(-DigiCert High Assurance CA-3)到我的信任庫,我可以解決這個問題。不需要添加「-thecompanycert」(由DigiCert高保證CA-3發佈)。我對嗎? – javauser35

+0

正確,將中間商(DigiCert High Assurance CA-3)添加到您的商店應解決您所看到的連接問題。 –

+0

好的,謝謝你的答案,但是向信任庫添加中間證書有什麼風險。它是唯一正確的方法嗎? – javauser35

0

鑑於CA和中間CA已經存在於最近Java版本的默認信任庫中,除非您使用的是較舊的Java版本,否則不需要導入它們。無論如何,這取決於你對CA的信任程度,但Java和大多數瀏覽器已經信任它。

相關問題