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

Уведомление

Icon
Error

3 Страницы<123>
Опции
К последнему сообщению К первому непрочитанному
Offline Евгений Афанасьев  
#11 Оставлено : 14 февраля 2019 г. 16:45:47(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 690 раз в 651 постах
Проверить подключение можно и с помощью csptest, например:
"C:\Program Files\Crypto Pro\CSP\csptest" -tlsc -server int223.zakupki.gov.ru -file 223/integration/integration/upload -v -v

При этом:
...
Cipher Suites: (ff 85) (00 81) (c0 14) (c0 13) (00 35) (00 2f) (c0 0a) (c0 09) (00 38) (00 32) (00 0a) (00 13) (00 05) (00 04)
...

SECPKG_ATTR_CIPHER_INFO: Protocol: 80, Suite: 81 (TLS_GOSTR341001_WITH_28147_CNT_IMIT) <--- 00 81
SECPKG_ATTR_CIPHER_INFO: Cipher: (GOST 28147-89), Len: 256, BlockLen: 1
SECPKG_ATTR_CIPHER_INFO: Hash: (GOST R 34.11-94), Len: 256 <--- ГОСТ Р 34.11-94
SECPKG_ATTR_CIPHER_INFO: Exchange: (GOST DH 34.10-2001), MinLen: 512, MaxLen: 512
SECPKG_ATTR_CIPHER_INFO: Certificate: (GR 34.10-2001), KeyType: 0 <--- ГОСТ Р 34.10-2001
SECPKG_ATTR_NAMES: ИНН=007710568760, ОГРН=1047797019830, STREET="ул. Ильинка, д. 7", E=777@roskazna.ru, C=RU, S=г. Москва, L=Москва, O=Федеральное казначейство, OU=Управление информационной инфраструктурой, T=Заместитель начальника управлен
ия, CN=int223.zakupki.gov.ru
SECPKG_ATTR_PACKAGE_INFO# fCapabilities: 0x107B3

Если скачать сертификат сервера, то у него открытый ключ на алгоритме ГОСТ 2001.
На счет проверки в JCP. Присылается полный набор алгоритмов, судя всему:

Cipher Suite: TLS_CIPHER_2001
0000: 0D 00 00 07 04 15 16 EE EF 00 00 0E 00 00 00 D8 ................ <- 21, 22, 238, 239 типы алгоритмов в TLS_CIPHER_2001, который должен содержать только 22

Такую ситуацию (когда TLS_CIPHER_2001, но пропускать сертификат с ключом ГОСТ 2012 - есть 238 и 239 в списке) мы, вероятно, не воспроизводили (так как не ожидали такой набор алгоритмов), проверим, спасибо, и поправим на HANDSHAKE_FAILURE.
NPE, потому что сюита TLS_CIPHER_2001 имеет набор данных, отличный от TLS_CIPHER_2012.

Отредактировано пользователем 14 февраля 2019 г. 16:54:15(UTC)  | Причина: Не указана

Offline dbubb  
#12 Оставлено : 14 февраля 2019 г. 17:13:53(UTC)
dbubb

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

Группы: Участники
Зарегистрирован: 02.02.2011(UTC)
Сообщений: 43
Мужчина
Откуда: Екатеринбург

Сказал «Спасибо»: 14 раз
Поблагодарили: 1 раз в 1 постах
Коллеги из ЕИС ещё такую информацию сообщили:
Цитата:
Похоже что проблема в том, что ваш клиент не поддерживает ничего выше TLS 1.0.
Мы сейчас попробовали сами аналогичные запросы отправлять через этот же сервер с сертификатами с ключом и подписью по ГОСТ-2012, но из клиента с поддержкой протоколов выше TLS 1.0.И вот при использовании TLS 1.1 хендшейк завершается успешно.


Разве КриптоПро JCP версии 2.0.39014 не поддерживает TLS 1.1?
Или это где-то настраивается?
Offline Евгений Афанасьев  
#13 Оставлено : 14 февраля 2019 г. 17:43:20(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 690 раз в 651 постах
В 39014 - нет поддержки. В последних версиях надо указывать протокол (зависит от того, где используется, протоколы "GostTLSv1.1", он же "TLSv1.1", и "GostTLSv1.2", он же "TLSv1.2").
thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
dbubb оставлено 15.02.2019(UTC)
Offline Евгений Афанасьев  
#14 Оставлено : 14 февраля 2019 г. 17:51:04(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 690 раз в 651 постах
csptest ... -proto 5 и 6 (TLS 1.1, 1.2) также дают TLS_GOSTR341001_WITH_28147_CNT_IMIT, т.е. TLS_CIPHER_2001.
Offline dbubb  
#15 Оставлено : 15 февраля 2019 г. 13:15:51(UTC)
dbubb

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

Группы: Участники
Зарегистрирован: 02.02.2011(UTC)
Сообщений: 43
Мужчина
Откуда: Екатеринбург

Сказал «Спасибо»: 14 раз
Поблагодарили: 1 раз в 1 постах
Цитата:
В 39014 - нет поддержки. В последних версиях надо указывать протокол (зависит от того, где используется, протоколы "GostTLSv1.1", он же "TLSv1.1", и "GostTLSv1.2", он же "TLSv1.2").

Обновил версию КриптоПро JCP до 2.0.40035.
Судя по логам, по прежнему используется TLS 1.0.
Подскажите, как можно указать протокол?
На вкладке "Настройки TLS" ничего похожего не увидел.
Offline Евгений Афанасьев  
#16 Оставлено : 15 февраля 2019 г. 14:14:16(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 690 раз в 651 постах
Если программно создаете подключение, то
SSLContext sslCtx = SSLContext.getInstance("GostTLSv1.1");
или
SSLContext sslCtx = SSLContext.getInstance("GostTLSv1.2");
И можно использовать константы из ru.CryptoPro.ssl.Provider (вместо алгоритмов-строк).
thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
dbubb оставлено 15.02.2019(UTC)
Offline dbubb  
#17 Оставлено : 15 февраля 2019 г. 14:40:22(UTC)
dbubb

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

Группы: Участники
Зарегистрирован: 02.02.2011(UTC)
Сообщений: 43
Мужчина
Откуда: Екатеринбург

Сказал «Спасибо»: 14 раз
Поблагодарили: 1 раз в 1 постах
Цитата:
Если программно создаете подключение, то
SSLContext sslCtx = SSLContext.getInstance("GostTLSv1.1");
или
SSLContext sslCtx = SSLContext.getInstance("GostTLSv1.2");
И можно использовать константы из ru.CryptoPro.ssl.Provider (вместо алгоритмов-строк).


1. А без обновления приложения, настройками, никак нельзя?
А то обновить приложение на рабочем сервере быстро не получится...

2. Если все-таки программно, то тоже вопрос:
мы не создаем программно подключение, мы для взаимодействия используем апачевскую библиотеу httpclient,
а системные параметры настраиваем таким образом:
Код:
System.setProperty("javax.net.ssl.supportGVO", "true");
System.setProperty("javax.net.ssl.trustStoreType", JCP.HD_STORE_NAME);
System.setProperty("javax.net.ssl.trustStore", "...");
System.setProperty("javax.net.ssl.trustStorePassword", "...");
System.setProperty("javax.net.ssl.keyStoreType", "...");
System.setProperty("javax.net.ssl.keyStorePassword", "...");


можно ли как-то указать протокол при таком подходе?
Offline Евгений Афанасьев  
#18 Оставлено : 15 февраля 2019 г. 15:19:03(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 690 раз в 651 постах
В идеале, предусмотреть передачу извне таких настроек, как протокол, алгоритм, пароль и т.п., например, как в коннекторе у томката. Тот же коннектор потом использует эти параметры, так как создает контекст помощью: SSLContext.getInstance(protocol).
Среди них (javax.net*) нет протокола, но есть, например, https.protocols, он используется в HttpsURLConnection и может передать значение в setEnabledProtocols(). Значение представляет 1 и более протоколов, перечисленных через запятую. Задается с помощью Security.setProperty(), но использует его, если не ошибаюсь, только HttpsURLConnection.
У apachehttp как будто аналогичным способом создается, нужно передать protocol, иначе по умолчанию - "TLS". Может, в более новых версиях что-то более универсальное появилось, допустим, можно задать протокол в том числе какой-нибудь настройкой через -D<param>=<value>.

Отредактировано пользователем 15 февраля 2019 г. 15:24:22(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
dbubb оставлено 15.02.2019(UTC)
Offline dbubb  
#19 Оставлено : 26 февраля 2019 г. 10:55:26(UTC)
dbubb

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

Группы: Участники
Зарегистрирован: 02.02.2011(UTC)
Сообщений: 43
Мужчина
Откуда: Екатеринбург

Сказал «Спасибо»: 14 раз
Поблагодарили: 1 раз в 1 постах
Обновили на сервере версию КриптоПро JCP до 2.0.40035, в том числе реализовали возможность указать протокол соединения.
Пробовали и "GostTLSv1.1" и "GostTLSv1.2", и вариант по умолчанию - к сожалению, ничего не помогло.

При этом коллеги из ЕИС сообщают что когда они тестируют у себя подключение с использованием сертификата с ключом по ГОСТ-2012 - у них все работает, но они при этом используют КриптоПро CSP, а не Криптопро JCP:
Цитата:
Нам по-прежнему не удалось воспроизвести проблему у себя ни в одной конфигурации. Все сертификаты с подписью и ключами, созданными по алгоритмам ГОСТ-2012, которые у нас есть, успешно проходят проверку на тех же фронтальных серверах, через которые мы с вами пробовали отправлять запросы. Никаких ошибок при этом мы не наблюдаем, шифрование безопасного соединения между клиентом и сервером происходит по алгоритмам ГОСТ-2001 (как и в вашем случае). TLS mutual auth проходит успешно и при использовании TLS 1.0 и при использовании TLS 1.1.
Непонятно, в чем здесь может быть проблема. Возможно есть разница в поведении между Криптопро CSP (мы используем ее) и Криптопро JCP.


Может есть идеи в чем может быть проблема? На самом деле поведение КриптоПро CSP и Криптопро JCP отличается при установке соединения?

На всякий случай прикладываю архив с логом одной из попыток соединения по TLSv1.1:
log.zip (13kb) загружен 2 раз(а).
Offline Евгений Афанасьев  
#20 Оставлено : 26 февраля 2019 г. 13:07:27(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 690 раз в 651 постах
CSP игнорирует алгоритмы в CertificateRequest.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
3 Страницы<123>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.