我尝试过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/