無法在Java 中找到有效的憑證路徑
遇到錯誤「sun.security.provider.certpath.SunCertPathBuilderException: 無法找到連線到https伺服器時,請求目標的有效憑證路徑”,這表示憑證有問題
原因:
當JVM 無法驗證伺服器的憑證鏈時,會發生此錯誤。這可能是由於使用自簽名憑證或 JVM 不信任頒發伺服器憑證的憑證授權單位。
解決方案:
1.將憑證新增至受信任儲存區:
要解決使用自簽章憑證時的問題,您可以將憑證新增至JVM 的信任儲存區。這涉及存取 Java 金鑰庫(通常位於 JAVA_HOME/jre/lib/security/cacerts),並將伺服器的憑證新增為受信任的頒發機構。
2.使用-Djavax.net.ssl.trustStore JVM 參數:
或者,您可以在啟動Java 應用程式時使用-Djavax.net.ssl. trustStore JVM 參數指定自訂信任儲存的位置。這允許您在不修改系統金鑰庫的情況下維護單獨的信任儲存。
3.驗證 JDK/JRE:
確保您使用與應用程式所需的 Java 版本關聯的正確 JDK 或 JRE。 JDK/JRE 版本不符可能會導致憑證驗證問題。
4.解決備用名稱異常:
如果遇到異常“java.security.cert.CertificateException:找不到與localhost 匹配的名稱”,則表明憑證的使用者備用名稱(SAN) 與您正在存取的主機。驗證 SAN 和主機名稱的有效性,或更新 Java 設定以接受通配符憑證。
以上是如何解決Java中的「sun.security.provider.certpath.SunCertPathBuilderException:無法找到要求目標的有效憑證路徑」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!