簡體   English   中英

從Java調用SSL URL會導致證書問題

[英]Calling SSL URL from Java gives certificate issues

我正在嘗試使用SSL做API。 執行呼叫時,出現以下錯誤:

org.springframework.web.client.ResourceAccessException: I/O error on GET request for "https://yyyyy.zzz/123":sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target; nested exception is 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

我知道StackOverflow中有很多與此問題有關的問題,但是我看到的是因為證書是自簽名的。 在這種情況下,證書是有效的,瀏覽器會毫無問題地將其識別為有效證書。

所以我的問題是,為什么從Java調用時它失敗,並且在使用瀏覽器時效果很好?

我有同樣的問題。 瀏覽器可以識別證書(和證書路徑),但是Java虛擬機無法識別。 錯誤文本是相同的。

就我而言,信任根位於瀏覽器密鑰庫和Java信任密鑰庫中。 這樣每個人都可以檢查推力路徑。 但是,如果您的服務器返回的不是整個證書路徑,而是僅返回一個服務器,則難度會更大。 在這種情況下,僅當驗證者的推力存儲中具有INTERMEDIATE證書時,才可以驗證證書路徑。

由於Java密鑰庫的更新不如瀏覽器中的更新那樣頻繁,因此您可以在瀏覽器中擁有中間證書,而在JVM中則沒有。

在這種情況下可能的解決方案:

  • 服務器返回整個證書鏈
  • 要在Java信任庫中添加的中間證書

有關更多信息,請檢查Java中的證書路徑發現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM