«Якорь для пути сертификации не найден» в хранилище доверенных сертификатов - PullRequest
2 голосов
/ 13 декабря 2011

Я попробовал этот метод , чтобы установить безопасное соединение с сервером моего университета. В небольшом 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());
}

1 Ответ

1 голос
/ 13 декабря 2011

Проблема в том, что библиотека HTTP, используемая JSoup, не получает (или вообще не использует) эти системные свойства. Для отладки выясните, что использует JSoup под крышками, и подключитесь вручную. Если он работает на настольном компьютере, возможно, с вашим хранилищем доверия все в порядке.

...