我尝试过this method建立与我大学的服务器的安全连接。在小型Java应用程序中,它适用于我,但不适用于Android 2.3.3。相反,我得到以下异常:

javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException:
    Trust anchor for certification path not found.`



该解决方案的问题在哪里?是信任库本身还是我导入了“错误的”证书?
如何更好地调试此类错误?


我的代码:

try {
    File dir = Environment.getExternalStorageDirectory();
    File file = new File(dir, "test.jks");

    if (file.exists()) {
        System.out.println(file.getAbsolutePath());
        System.setProperty("javax.net.ssl.trustStore", file.getAbsolutePath());
        System.setProperty("javax.net.ssl.trustStorePassword", "myPassword");
        System.out.println(System.getProperty("javax.net.ssl.trustStore"));

        Document document = Jsoup.connect("https://www.dhbw-loerrach.de/").get();
        lblMessage.setText(document.html());
    }
} catch (Exception ex) {
    System.out.println(ex.getMessage());
}

最佳答案

问题在于,无论JSoup使用什么http库,都不会获取(或完全使用)那些系统属性。要对其进行调试,请找出幕后使用的JSoup并手动连接。如果它可以在桌面上运行,则您的信任库可能很好。

关于java - 信任库中的“找不到证书路径的 anchor ”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8480436/

10-09 06:20