SSL-соединение с Java - PullRequest
2 голосов
/ 03 мая 2010

Я пытаюсь установить тестовое соединение SSL, используя следующий код Java:

String httpsURL = "https://www.somehost.com";
URL myurl = new URL(httpsURL);
HttpsURLConnection con = (HttpsURLConnection)myurl.openConnection();

InputStream ins = con.getInputStream();
InputStreamReader isr=new InputStreamReader(ins);
BufferedReader in =new BufferedReader(isr);

String inputLine;

while ((inputLine = in.readLine()) != null)
    System.out.println(inputLine);

in.close();

Когда я подключаюсь к хосту А, все работает нормально - соединение установлено и ответ получен.

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

sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Все, что я прочитал до сих пор, говорит о том, что мне нужно установить сертификаты в моем хранилище ключей, однако, если это было решением, то почему Хост A работает, а Хост B не работает?

В качестве, вероятно, бесполезного - если я напишу похожий фрагмент кода C #, тогда соединение будет успешно согласовано как для хостов A, так и для B - то же самое применимо для перехода к URL в браузере.

Ответы [ 2 ]

2 голосов
/ 03 мая 2010

Наиболее вероятные причины:

  1. Хост B использует самозаверяющий сертификат.
  2. Сертификат подписан центром сертификации, которого нет в вашем хранилище доверенных сертификатов.
  3. Сертификат подписан промежуточным сертификатом, но узел B настроен неправильно, поэтому он не отправляет сертификат сервера с промежуточным сертификатом.

Для № 1, № 2 вам необходимо импортировать сертификат или сертификат CA в ваше хранилище доверенных сертификатов.

Для № 3, скажите хосту B отправить промежуточный сертификат.

0 голосов
/ 21 мая 2013

Вероятно, это связано с тем, что у вас нет действительного пути к сертификату, или, возможно, из-за того, что у вас нет сертификата CA для проверки какой-либо такой компании.

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