Статус: Участник
Группы: Участники
Зарегистрирован: 07.05.2009(UTC) Сообщений: 16 Откуда: Санкт-Петербург
|
Здравствуйте. С недавних пор на одном из наших проектов начала всплывать странная ошибка ssl_error_rx_malformed_server_hello («SSL получило повреждённый запрос на установление соединения Server Hello»). Поиск в сети ничего не дал, кроме похожей темы на этом форуме и форума ФНС. Решений нигде нет. Сервер работает под управлением Apache Tomcat 5.5.31, Java 1.6u23, JCP и JTLS 1.0.47. Включена клиентская аутентификация. До недавнего времени всё работало, около года. Но на прошлой неделе пришёл багрепорт, и после непродолжительного расследования у нас закончились идеи по решению проблемы. Суть в том, что Internet Explorer либо сразу не подключается, либо подключается, показывает несколько страниц, и лишь затем выводит ошибку подключения. Понятно, никаких осмысленных сообщений он не выдаёт. На сервере включен debug для JTLS, и вот как проходит ошибочная сессия: Код:02.04.2012 9:26:37 ru.CryptoPro.ssl.P a
FINE: %% ClientHello, TLSv1; Cipher Suites: [TLS_CIPHER_2001, TLS_CIPHER_94, SSL3_CK_GVO_KB2, Unknown 0x0:0x4, Unknown 0x0:0x5, Unknown 0x0:0xa, Unknown 0x0:0x9, Unknown 0x0:0x64, Unknown 0x0:0x62, Unknown 0x0:0x3, Unknown 0x0:0x6, Unknown 0x0:0x13, Unknown 0x0:0x12, Unknown 0x0:0x63, Unknown 0x0:0xff]; Compression Methods: 0
02.04.2012 9:26:37 ru.CryptoPro.ssl.d a
FINE: %% getting aliases for Server
02.04.2012 9:26:37 ru.CryptoPro.ssl.d a
FINE: %% matching alias: ucabinet
02.04.2012 9:26:37 ru.CryptoPro.ssl.P b
FINE: %%Choosen server alias: ucabinet
02.04.2012 9:26:37 ru.CryptoPro.ssl.P a
FINE: %% ServerHello, TLSv1; Cipher Suite: TLS_CIPHER_2001; Compression Method: 0
02.04.2012 9:26:37 ru.CryptoPro.ssl.P a
FINE: %% Cipher suite: TLS_CIPHER_2001
02.04.2012 9:26:37 ru.CryptoPro.ssl.P a
FINE: %% Certificate message:
------
Subject: CN=****, O=****, L=Санкт-Петербург, C=RU
Valid from Fri Dec 23 17:18:00 GMT+04:00 2011 until Sun Dec 23 17:27:00 GMT+04:00 2012
------
02.04.2012 9:26:37 ru.CryptoPro.ssl.P a
FINE: %% CertificateRequest
02.04.2012 9:26:37 ru.CryptoPro.ssl.P a
FINE: %% ServerHelloDone (empty)
02.04.2012 9:26:37 ru.CryptoPro.ssl.P a
FINE: %% Certificate message:
------
Обратите внимание на последние отчёркивания. При успешном подключении есть продолжение: Код: Subject: T=****, CN=****, O=****, L=Санкт-Петербург, C=RU, EMAILADDRESS=****
Valid from Wed Apr 27 15:21:00 GMT+04:00 2011 until Fri Apr 27 15:30:00 GMT+04:00 2012
------
02.04.2012 1:00:13 ru.CryptoPro.ssl.P a
FINE: %% ClientKeyExchange...
02.04.2012 1:00:13 ru.CryptoPro.ssl.P a
FINE: %% Finished.
02.04.2012 1:00:13 ru.CryptoPro.ssl.K a
FINE: ChangeCipherSpec %% Finished.
02.04.2012 1:00:13 ru.CryptoPro.ssl.P a
FINE: %% Cached server session: [Session-933, TLS_CIPHER_2001]
Все строки до этого абсолютно идентичны, кроме ClientHello, в котором отсутствуют все Unknown: Код:FINE: %% ClientHello, TLSv1; Cipher Suites: [TLS_CIPHER_2001, TLS_CIPHER_94, SSL3_CK_GVO_KB2, SSL3_CK_GVO]; Compression Methods: 0
Но, как я написал в начале, после нескольких успешных сессий на случайном месте случается затык, и подключения отваливаются. При этом, если отключить клиентскую аутентификацию и оставить только серверную, всё замечательно работает. Но. Мы установили «Crypto Pro Fox» (Firefox с возможностью работы с ГОСТ-шифрованием). Сайт https://www.cryptopro.ru:9443/ в нём открывается без проблем. При попытке входа на наш сервер вне зависимости от типа аутентификации (то есть, даже с серверной, когда IE подключается) выдаётся ошибка: Цитата:Ошибка при установлении защищённого соединения
При соединении с ****:8443 произошла ошибка.
SSL получило повреждённый запрос на установление соединения Server Hello.
(Код ошибки: ssl_error_rx_malformed_server_hello)
В логе при этом следующее: Код:04.04.2012 18:45:11 ru.CryptoPro.ssl.P a
FINE: %% ClientHello, SSLv3; Cipher Suites: [TLS_CIPHER_2001, Unknown 0x0:0x88, Unknown 0x0:0x87, Unknown 0x0:0x38, Unknown 0x0:0x84, Unknown 0x0:0x35, Unknown 0x0:0x39, Unknown 0x0:0x45, Unknown 0x0:0x44, Unknown 0x0:0x33, Unknown 0x0:0x96, Unknown 0x0:0x41, Unknown 0x0:0x4, Unknown 0x0:0x5, Unknown 0x0:0x2f, Unknown 0x0:0x16, Unknown 0x0:0x13, Unknown 0xfe:0xff, Unknown 0x0:0xa, Unknown 0x0:0xff]; Compression Methods: 0
04.04.2012 18:45:11 ru.CryptoPro.ssl.d a
FINE: %% getting aliases for Server
04.04.2012 18:45:11 ru.CryptoPro.ssl.d a
FINE: %% matching alias: ucabinet
04.04.2012 18:45:11 ru.CryptoPro.ssl.P b
FINE: %%Choosen server alias: ucabinet
04.04.2012 18:45:11 ru.CryptoPro.ssl.P a
FINE: %% ServerHello, TLSv1; Cipher Suite: TLS_CIPHER_2001; Compression Method: 0
04.04.2012 18:45:11 ru.CryptoPro.ssl.P a
FINE: %% Cipher suite: TLS_CIPHER_2001
04.04.2012 18:45:11 ru.CryptoPro.ssl.P a
FINE: %% Certificate message:
------
Subject: CN=****, O=****, L=Санкт-Петербург, C=RU
Valid from Fri Dec 23 17:18:00 GMT+04:00 2011 until Sun Dec 23 17:27:00 GMT+04:00 2012
------
04.04.2012 18:45:11 ru.CryptoPro.ssl.P a
FINE: %% ServerHelloDone (empty)
Это почти идентично протоколу неудачного входа через Internet Explorer, за исключением последней строки, где отсутствует линия из дефисов, и строки ClientHello. Также замечу, что программа на Java и JCP, запрашивающая некоторые данные с сервера (которая входит по клиентскому сертификату), работает без сбоев, и выдаёт в логах сервера такую строку ClientHello (всё остальное не отличается от успешного входа через Internet Explorer): Код:FINE: %% ClientHello, TLSv1; Cipher Suites: [TLS_CIPHER_2001, TLS_CIPHER_94, SSL3_CK_GVO_KB2]; Compression Methods: 0
Подскажите, пожалуйста, что ещё можно попробовать, куда посмотреть? Спасибо. Отредактировано пользователем 5 апреля 2012 г. 15:08:56(UTC)
| Причина: Не указана
|