簡體   English   中英

即使信任庫中的根證書,java也會引發SSLHandshakeException

[英]java raises an SSLHandshakeException even if the root certificate in the trust store

以下java代碼:

new URL("https://www.limagrain.com/").openStream()

引發以下錯誤:

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

但是,此站點使用的根證書( Thawte Primary Root CA-G3 )存在於java的信任庫中,並且該站點在瀏覽器中顯示沒有問題。

Qualys上檢查站點SSL檢查器會發出有關標記為額外下載的中間證書的警告。

如何讓java自動下載中間證書?

因為,您正在使用安全通道https。 只是,根證書是不夠的。 您需要擁有Root和CA或完整的證書鏈。

部分 - 我

支持管理局信息訪問(AIA)擴展

可以使用對Authority Information Access擴展的caIssuers訪問方法的支持。 默認情況下,它是為了兼容性而禁用的,可以通過將系統屬性com.sun.security.enableAIAcaIssuers設置為值true來啟用它。

如果設置為true,則Sun的CertIXBuilder的PKIX實現使用證書的AIA擴展(除指定的CertStore之外)中的信息來查找頒發的CA證書,前提是它是類型為ldap,http或ftp的URI。

注意:根據您的網絡和防火牆設置,可能還需要按照[網絡文檔( http://docs.oracle.com/javase/8/docs/technotes/guides/net)中的說明配置網絡代理服務器。 /properties.html )。

第二部分

以下是如何手動導入java證書中的證書鏈的步驟

  1. 在Google Chrome中打開https://www.limagrain.com/ ,然后按F12。
  2. 選擇安全選項卡廣告選擇證書路徑突出顯示。

在此輸入圖像描述

  1. 轉到詳細信息選項卡,然后單擊“導出到文件”。 選擇Base 64編碼類型。

在此輸入圖像描述

  1. 提供認證文件名,然后單擊下一步和下一步。

在此輸入圖像描述

  1. 打開證書,查看證書鏈是否正確導出。 在此輸入圖像描述

  2. 轉至command.exe中的%JAVA_HOME%/ jre / lib / security

  3. 使用以下命令導入證書鏈。

    keytool -importcert -file limagrain.cer -alias limagrain -keystore cacerts -storepass changeit

注意:確保證書路徑正確。

  1. 通過寫“是”接受cecerts中的證書。

將系統屬性com.sun.security.enableAIAcaIssuers設置為true

System.setProperty("com.sun.security.enableAIAcaIssuers", "true");

請參閱Oracle的Java PKI指南: https//docs.oracle.com/javase/7/docs/technotes/guides/security/certpath/CertPathProgGuide.html#AppB

暫無
暫無

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

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