2012-04-24 2 views
0

Я запускаю этот Java + SSL Tutorial, но я получаю следующую ошибку.SSLHandshakeException при запуске простого примера SSL Java

main, handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown 
javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown 
    at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source) 
    at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source) 
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.recvAlert(Unknown Source) 
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source) 
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source) 
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readDataRecord(Unknown Source) 
    at com.sun.net.ssl.internal.ssl.AppInputStream.read(Unknown Source) 
    at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) 
    at sun.nio.cs.StreamDecoder.implRead(Unknown Source) 
    at sun.nio.cs.StreamDecoder.read(Unknown Source) 
    at java.io.InputStreamReader.read(Unknown Source) 
    at java.io.BufferedReader.fill(Unknown Source) 
    at java.io.BufferedReader.readLine(Unknown Source) 
    at java.io.BufferedReader.readLine(Unknown Source) 
    at EchoServer.main(EchoServer.java:24) 

Строка в коде, где происходит исключение здесь:

 while ((string = bufferedreader.readLine()) != null) { 

Что я здесь делаю неправильно? Сменили ли вещи с того момента, как этот пример был написан?

ответ

-2

Возможно, по какой-либо причине сертификат недействителен (или не загружен). Включение режима отладки должно помочь вам найти больше проблемы

System.setProperty ("javax.net.debug", "all");

Кроме того, если вы используете сертификаты самообслуживания знак, посмотрите на: http://ctasada.blogspot.com.es/2010/11/httpclient-use-self-signed-certificates.html

+1

Эта связь вы используете еще раз способствует использование в TrustManager, что позволяет что-либо до конца. Выполнение разыгрывает точку использования SSL/TLS, поскольку активный MITM может обмануть вас и использовать любой сертификат, которому вы бы доверяли. Он также пропускает любое имя хоста. Это просто небезопасно. – Bruno

+0

Ну, это именно то, что говорится в статье, это небезопасно. Но сертификаты самооценки охраняются по своему характеру, поэтому я говорю, чтобы проверить ссылку, только если «она использует сертификаты самоподписывания». В любом случае, хорошо, что вы это замечаете. –

+1

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