2010-11-24 3 views
2

у меня есть это:SSL-клиент - когда нужен сертификат?

SSLSocketFactory factory = HttpsURLConnection.getDefaultSSLSocketFactory(); 
    SSLSocket socket = (SSLSocket) factory.createSocket("www.verisign.com", 443); 

Это провал на 2-й линии с «Connection отказался» ошибку.

Теперь, нужно ли мне установить сертификат verisign в моем магазине доверия, прежде чем я смогу даже сделать выше? У меня создалось впечатление, что я могу подключиться к серверу SSL и выполнить getPeerCertificates(), чтобы получить сертификаты. Это не то, что делают наши браузеры? В противном случае, как они узнают, какие полномочия подписываться?

(Очевидно, я использую Verisign. Например, мой реальный URL слишком Fugly использовать здесь ...)

+0

Мне нужно задаться вопросом, сожжен ли я брандмауэром или чем-то еще. Я даже не могу: URL url = новый URL («www.google.com»); HttpURLConnection con = (HttpURLConnection) url.openConnection(); а затем читать из con.getInputStream() – 2010-11-24 20:42:15

ответ

1

Отклонено соединение означает, что ничто не слушает в целевом хосте: порт или брандмауэр мешают. Это логично и временно до того, как что-либо делает SSL.

1

Вы проверили, что удаленный сервис на самом деле и работает, и что вы можете подключиться к нему? Возможно, ошибка «Connection reject» на самом деле является отказоустойчивым соединением. :-)

+0

https://www.verisign.com, похоже, вверх ;-) – 2010-11-24 19:09:44

+0

@ Тони Эннис: Он сказал, что это не тот сайт, на котором он фактически подключается, но что он не хотите раскрыть URL. Последнее предложение вопроса :) – 2010-11-25 06:16:52

+0

Да, но я действительно пробовал веб-сайт verisign. Он не может подключиться к этому. (Q: Verisign использует самовыраженный сертификат? Lolz) – 2010-11-25 14:54:01

1

Обычно вам не нужно устанавливать сертификат сервера на свой компьютер явно. PKI работает таким образом, что ваша система должна иметь возможность проверять сертификат сервера без каких-либо предварительных знаний об этом. Однако это будет работать только тогда, когда сертификат вашего сервера имеет свои корни в «известных ЦС», то есть в службах сертификации, чьи корневые или другие сертификаты уже указаны в клиентской системе. Если это не так (например, у вас есть самозаверяющий или какой-либо другой пользовательский сертификат на сервере), вам действительно нужно установить сертификат в своей клиентской системе, прежде чем указанные классы смогут правильно проверить сертификат сервера.

Вы можете прочитать about certificates and how they are used in SSL here.

Смежные вопросы