Проблема при доступе к веб-сайту с Java с использованием HTTPS (не доверенный сертификат) - PullRequest
1 голос
/ 02 мая 2011

Я пытаюсь получить доступ к сайту, используя HTTP из приложения Java. Поскольку приложение работает в среде разработки, соответствующий сертификат не является доверенным.

При использовании пакета javax.net.ssl ​​я пытаюсь определить пользовательскую реализацию TrustManager, которая разрешает все и передает это во второй параметр метода init SslContext, но это не работает.

Кто-нибудь заставляет работать что-то подобное? Большое спасибо за вашу помощь! Thierry

Ответы [ 2 ]

1 голос
/ 02 мая 2011

Довольно просто реализовать TrustManager, который ничего не проверяет (работает как на стороне клиента, так и на стороне сервера):

public class NoVerifyTM implements X509TrustManager
{
  void checkClientTrusted(X509Certificate[] chain, String authType) {
    /* Accept All */
  }

  void checkServerTrusted(X509Certificate[] chain, String authType) {
    /* Accept All */
  }

  X509Certificate[] getAcceptedIssuers() {
    return new X509Certificate[0]
  }
}

Чтобы использовать это TrustManager:

SSLContext ctx = SSLContext.getDefault();
ctx.init(null, new TrustManager[] { new NoVerifyTM() }, null);
SSLSocketFactory sf = ctx.getSocketFactory();

Обратите внимание, что (как сказал @hanwg) такой диспетчер доверия следует использовать только для целей тестирования / создания прототипов.

0 голосов
/ 02 мая 2011

если вы доверяете сертификату, вы должны добавить его в хранилище доверенных сертификатов сервера приложений.реализация диспетчера доверия, который не выполняет проверку сертификатов, является уязвимостью безопасности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...