java - 信任库中的 "Anchor for certification path not found"

标签 java android ssl https jsoup

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

javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException:
    Trust anchor for certification path not found.`
  1. 这个解决方案的问题在哪里?是信任库本身还是我导入了“错误的”证书?
  2. 如何更好地调试此类错误?

我的代码:

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 for certification path not found",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8480436/

相关文章:

java - 使用万向节 SDK

Python/sockets/ssl EOF 发生违反协议(protocol)

java - Android 蓝牙发现不记录任何内容

android - 如何设置自定义zip文件的mime类型?

java - 使用公钥/私钥恢复签名消息

Android:动态设置复选框背景

c# - 运行 dev-certs https --trust 后,dotnet run 报错找不到默认的开发者证书

c++ - SSL_use_certificate 似乎导致双重释放

java - 使用正则表达式在 Java 中提取日期的问题

java - 我正在尝试解析一个文本文件以计算唯一字符串的数量并打印有关这些字符串的一些信息