Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline auglov  
#1 Оставлено : 22 сентября 2016 г. 19:47:25(UTC)
auglov

Статус: Активный участник

Группы: Участники
Зарегистрирован: 25.12.2014(UTC)
Сообщений: 76

Сказал(а) «Спасибо»: 3 раз
Здравствуйте.

У нас был установлен JCP 2.0.37886, с которым мы, как клиент, обращались к некоторым сервисам. С той стороны везде стоит CSP, так думаю, в каких-то версиях. Все работало исправно до того момента, пока на одном из сервисов не обновились до CSP 3.6 R3 (версия 3.6.7491). Говорят, что раньше тоже была R3, но более ранняя. Обновиться до R4 или чего-то более позднего они сейчас не хотят рисковать, чтобы не отвалились клиенты, особенно, которые ходят через GUI браузером.

Мы попробовали обновиться до JCP 2.0.38830 (самая свежая на текущий момент) и стало только хуже - перестали соединяться даже с теми, с кем раньше получалось. Везде стек одинаковый:

Код:
javax.net.ssl.SSLProtocolException: Server did not send a DH Server Key Exchange message
	at sun.security.ssl.ClientHandshaker.serverHelloDone(ClientHandshaker.java:838)
	at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:285)
	at sun.security.ssl.Handshaker.processLoop(Handshaker.java:868)
	at sun.security.ssl.Handshaker.process_record(Handshaker.java:804)
	at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1016)
	at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312)
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339)
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323)
	at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:563)
	at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
	at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1091)
	at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)


Из браузера с теми же сертификатами с той же машины все подключения проходят корректно и сервисы возвращают какие-то вменяемые результаты, как и должно быть.

Что можно сделать с JCP, чтобы все заработало? Что мы могли пропустить?
Offline Евгений Афанасьев  
#2 Оставлено : 23 сентября 2016 г. 9:38:04(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 4,003
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 714 раз в 674 постах
Здравствуйте.
В приведенном стеке ни слова про ru.CryptoPro.ssl, т.е. JTLS не используется (возможно, не установлен).
Offline auglov  
#3 Оставлено : 23 сентября 2016 г. 11:36:04(UTC)
auglov

Статус: Активный участник

Группы: Участники
Зарегистрирован: 25.12.2014(UTC)
Сообщений: 76

Сказал(а) «Спасибо»: 3 раз
Спасибо. Действительно, не был установлен. Я как-то пропустил этот момент при обновлении версии JCP - в тот раз установил и то, и другое, в этот раз думал, что одной установки JCP будет достаточно.

Теперь стало нормально подключаться к некоторым сервисам, к которым и с 2.0.37886 получалось подключаться. Но все так же не подключается к тому, где CSP 3.6 R3 (версия 3.6.7491).

Вот такой стек:

Код:
java.net.SocketException: Connection reset
	at java.net.SocketInputStream.read(SocketInputStream.java:196)
	at java.net.SocketInputStream.read(SocketInputStream.java:122)
	at ru.CryptoPro.ssl.v.a(Unknown Source)
	at ru.CryptoPro.ssl.v.a(Unknown Source)
	at ru.CryptoPro.ssl.am.a(Unknown Source)
	at ru.CryptoPro.ssl.am.a(Unknown Source)
	at ru.CryptoPro.ssl.aa.read(Unknown Source)
	at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
	at java.io.BufferedInputStream.read1(BufferedInputStream.java:275)
	at java.io.BufferedInputStream.read(BufferedInputStream.java:334)
	at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:687)
	at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:633)
	at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:658)
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1323)
	at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:468)
	at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:338)


Специалисты с той стороны говорят, что причина в том, что у них "RFC 5746 на сервере отключен", чтобы "Клиенты, даже с устаревшим КриптоПро CSP, имеют доступ к серверу", что приводит к тому, что видно на стеке выше.

Что-то можно попытаться еще сделать, пока решается вопрос с переводом всех клиентов на свежие версии CSP?


Offline Евгений Афанасьев  
#4 Оставлено : 23 сентября 2016 г. 14:29:53(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 4,003
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 714 раз в 674 постах
В панели JCP 2.0 (ControlPane) на закладке "Настройки Сервера" есть галка "Запретить клиенту отправлять расширение", попробуйте ее включить.
Offline auglov  
#5 Оставлено : 23 сентября 2016 г. 14:45:04(UTC)
auglov

Статус: Активный участник

Группы: Участники
Зарегистрирован: 25.12.2014(UTC)
Сообщений: 76

Сказал(а) «Спасибо»: 3 раз
Сработало. Спасибо.
Offline spider  
#6 Оставлено : 14 марта 2017 г. 18:27:21(UTC)
spider

Статус: Активный участник

Группы: Участники
Зарегистрирован: 11.02.2011(UTC)
Сообщений: 49
Мужчина
Российская Федерация
Откуда: E-burg

Сказал «Спасибо»: 4 раз
Поблагодарили: 2 раз в 2 постах
Добрый день, коллеги!

Проблема аналогичная обозначенной выше. Но по стек-трейсу ломается немного в другом месте:

Код:
14-Mar-2017 20:11:11.994 SEVERE [http-nio-8443-exec-11] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [mvc-dispatcher] in context with path [] threw exception [Request processing failed; nested exception is java.lang.RuntimeException: Failed to connect to EIP.] with root cause
 java.net.SocketException: Connection reset
	at java.net.SocketInputStream.read(SocketInputStream.java:189)
	at java.net.SocketInputStream.read(SocketInputStream.java:121)
	at ru.CryptoPro.ssl.v.a(Unknown Source)
	at ru.CryptoPro.ssl.v.a(Unknown Source)
	at ru.CryptoPro.ssl.am.a(Unknown Source)
	at ru.CryptoPro.ssl.am.a(Unknown Source)
	at ru.CryptoPro.ssl.aa.read(Unknown Source)
	at org.apache.http.impl.io.SessionInputBufferImpl.streamRead(SessionInputBufferImpl.java:136)
	at org.apache.http.impl.io.SessionInputBufferImpl.fillBuffer(SessionInputBufferImpl.java:152)
	at org.apache.http.impl.io.SessionInputBufferImpl.readLine(SessionInputBufferImpl.java:270)
	at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:140)


Установлено JCP версии 2.0.39014, галочки установлены следующим образом: jcp_RI_problem.png (11kb) загружен 23 раз(а).
На стороне сервера куда обращаемся установлено КриптоПро CSP. Ядро версии 3.6.5364, продукт версия 3.6.7491 и установлены галочки следующим образом csp_RI_problem.png (9kb) загружен 20 раз(а).

Если установить галочку "Поддерживать RFC 5746 (Renegotiation Indicator)" на сервере тогда ошибка уйдет. Но при этом клиенты со старой версией КриптоПро CSP перестают подключаться на данный сервер. Можно ли как то решить эту проблему кроме как заставить всех клиентов обновить себе КриптоПро CSP до версии R4 ?

Заранее благодарю за ответ.

Отредактировано пользователем 14 марта 2017 г. 18:28:11(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#7 Оставлено : 15 марта 2017 г. 9:35:37(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 4,003
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 714 раз в 674 постах
Здравствуйте.
Можете приложить лог клиента (включив уровень логирования SSLLogger ALL)?
thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
spider оставлено 15.03.2017(UTC)
Offline spider  
#8 Оставлено : 15 марта 2017 г. 19:21:08(UTC)
spider

Статус: Активный участник

Группы: Участники
Зарегистрирован: 11.02.2011(UTC)
Сообщений: 49
Мужчина
Российская Федерация
Откуда: E-burg

Сказал «Спасибо»: 4 раз
Поблагодарили: 2 раз в 2 постах
Спасибо большое, проблема решена.

Глубокое логирование помогло разобраться самостоятельно. Проблема была в том, что сервер tomcat запускался от отдельного пользователя, где настройка "Prohabit to client to send RI extension" не была включена. Как только настройку включили и под этим пользователем все заработало. Немного смутило конечно, что настройки JCP под каждого пользователя свои, а не глобальные. Но это уже наша не внимательность.

Спасибо большое за ответ и помощьDancing
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (2)
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.