2015-11-18 3 views
0

Ошибка является преднамеренной и потому, что SSLv3 отключен. Клиент .NET по умолчанию использует SSLv3, и он не будет повторять попытку с поддерживаемой версией SSL без получения предупреждения перед сбоем.mod_ssl ошибка подтверждения рукопожатия

У меня есть OptRenegotiate, установленный в соответствии с http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#ssloptions, но мой сервер по-прежнему возвращает отказ от установления связи SSL, вместо того, чтобы оповещать об отказе от рукопожатия (затем отправляя отказ от подтверждения).

работы:

$ openssl s_client -connect my.working.server:443 -ssl3 
CONNECTED(00000003) 
2414208:error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure:s3_pkt.c:1472:SSL alert number 40 
2414208:error:1409E0E5:SSL routines:ssl3_write_bytes:ssl handshake failure:s3_pkt.c:656: 

терпит неудачу:

$ openssl s_client -connect my.failing.server:443 -ssl3 
CONNECTED(00000003) 
2414208:error:1409E0E5:SSL routines:ssl3_write_bytes:ssl handshake failure:s3_pkt.c:656: 

Подошва разница:

2414208:error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure:s3_pkt.c:1472:SSL alert number 40 

Становится это предупреждение для отправки, что проблема: я не могу найти ссылаться на него в любом месте документации Apache.

ответ

0

Клиент .NET по умолчанию использует SSLv3, и он не будет повторять попытку с поддерживаемой версией SSL без получения предупреждения перед сбоем.

Это не так, как работает протокол SSL-протокола. Клиент объявляет лучшую версию, которую он хочет поддерживать, и затем сервер отвечает лучшей версией, которая может быть равной или меньшей для версии клиента. Если это не удается, некоторые клиенты (в основном браузеры) повторяют с более низкой версией SSL, потому что они предполагают сломанный сервер. Но для этого они используют новое TCP-соединение, т. Е. Никакого пересмотра внутри существующего соединения.

Нет такой вещи, как обновление протокола, что и описывается здесь.

+0

Я обновил свой ответ, чтобы быть более четким. Это сообщение будет отправлено, это проблема. Когда сообщение отправлено, .NET реконструирует и подключает – user3668514

+0

@ user3668514: Это поведение является особенностью стека SSL. Я не думаю, что вы можете настроить что-то отличное от Apache, чтобы напрямую изменить это поведение. По крайней мере OptRenegotiate применяется только в том случае, если уже установлено SSL-соединение, которого у вас нет. Возможно, конфигурация отличается, если вы используете другую базовую версию OpenSSL или на нее может повлиять выбор шифров или что-то еще, поэтому я рекомендую вам просто сравнить конфигурацию сервера, чтобы узнать, что может вызвать разницу в поведении. –

+0

Я думаю, проблема в OpenSSL. Это кажется настолько простым, что единственным отличием является отправка предупреждения. Но как это сделать, это тайна (пока). – user3668514

0

TLS 1.0 необходимо включить на сервере, чтобы он мог отправить предупреждение перед сбоем. Клиент .NET получает предупреждение и снова пытается с защищенным протоколом, то есть не SSLv3.

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