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

Уведомление

Icon
Error

3 Страницы123>
Опции
К последнему сообщению К первому непрочитанному
Offline HelenKlimova  
#1 Оставлено : 10 июня 2014 г. 16:59:16(UTC)
HelenKlimova

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

Группы: Участники
Зарегистрирован: 10.06.2014(UTC)
Сообщений: 65
Российская Федерация

Сказал(а) «Спасибо»: 5 раз
Добрый день!

Столкнулись с такой непонятной проблемой.
Тестируем работу с несколькими партнерами по защищенному SSL (TLS) соединению. Со всеми тестирование проходит в нормальном режиме, но к одному партнеру не удается подключиться.

Фрагмент кода:

Security.setProperty("ssl.SocketFactory.provider","ru.CryptoPro.ssl.SSLSocketFactoryImpl");
Security.setProperty("ocsp.enable", "false");
System.setProperty("javax.net.debug", "ssl");
System.setProperty("com.sun.security.enableCRLDP", "true");
System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", "true");

ru.CryptoPro.CAdES.tools.Utility.initJCPAlgorithms();

SSLContext sslContext = SSLContext.getInstance("GostTLS");

KeyStore ks = KeyStore.getInstance("HDImageStore","JCP");
KeyManagerFactory kf = KeyManagerFactory.getInstance("GostX509");

ks.load(null, null);
kf.init(ks, null);

TrustManagerFactory tf = TrustManagerFactory.getInstance("GostX509");

KeyStore ts = KeyStore.getInstance("HDImageStore", "JCP");
ts.load(new FileInputStream(new File(file_name)), my_password);

tf.init(ts);

sslContext.init(kf.getKeyManagers(), tf.getTrustManagers(), null);

SSLSocketFactory fact = sslContext.getSocketFactory();
SSLSocket soc = (SSLSocket) fact.createSocket(url, 443);
BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(soc.getOutputStream(), "Windows-1251"));

wr.write("POST /sub HTTP/1.1\r\n");
wr.write("Host: url\r\n");
wr.write("Content-Type: application/x-www-form-urlencoded\r\n");
wr.write("\r\n");
wr.flush();


При выполнении flush выдается предупреждение:

10.06.2014 16:35:08 ru.CryptoPro.ssl.J a
WARNING: %% No alias is match
10.06.2014 16:35:08 ru.CryptoPro.ssl.J a
WARNING: %% No alias is match

Затем кидается Exception: "java.net.SocketException: Software caused connection abort: socket write error", и на этом все заканчивается.

Будем очень благодарны, если кто-нибудь подскажет, где и что искать. Политики поменяны, все корневые сертификаты в хранилище добавлены. Все сертификаты действующие.
Offline Евгений Афанасьев  
#2 Оставлено : 10 июня 2014 г. 17:16:31(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
Добрый день.
Возможно, в списке контейнеров нет того, который содержал бы сертификат с issuer из списка, который присылается сервером (certificate request).
Offline HelenKlimova  
#3 Оставлено : 10 июня 2014 г. 17:31:58(UTC)
HelenKlimova

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

Группы: Участники
Зарегистрирован: 10.06.2014(UTC)
Сообщений: 65
Российская Федерация

Сказал(а) «Спасибо»: 5 раз
Автор: afev Перейти к цитате

Возможно, в списке контейнеров нет того, который содержал бы сертификат с issuer из списка, который присылается сервером (certificate request).

Спасибо за ответ.
Пытались запихнуть в truststore все сертификаты, которые есть у нас от данного партнера, в том числе и ssl-сертификат с сервера.
Также пытались называть сертификаты в truststore по CN.
Результат один.
Пробовали сначала с другим криптопровайдером - безуспешно. Решили, что уж с Крипто-про наверняка получится. И опять какие-то проблемы.

И то, что приходит 2 сообщения

10.06.2014 16:35:08 ru.CryptoPro.ssl.J a
WARNING: %% No alias is match
10.06.2014 16:35:08 ru.CryptoPro.ssl.J a
WARNING: %% No alias is match

скорее всего, означает, что мы взаимно друг друга не видим?
Вот только почему такое может быть?
Offline Евгений Афанасьев  
#4 Оставлено : 10 июня 2014 г. 17:38:37(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
I. Попробуйте задать пароль на контейнер тут -
вместо
kf.init(ks, null);
сделать
kf.init(ks, <container_password_here>);

Выполните запрос.

Если не помогло, то продолжить:

II.

1) настройте логирование (jre/lib/logging.properties)

java.util.logging.ConsoleHandler.level=ALL
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter

ru.CryptoPro.ssl.SSLLogger.level=FINE
ru.CryptoPro.ssl.SSLLogger.handlers=java.util.logging.ConsoleHandler

2) после выполнения запроса поищите в логах certificate request, посмотрите список distinguished names
3) проверьте, есть ли среди клиентских контейнеров (с аутентиф.) тот, у кого issuer есть в списке из п. 2.
Offline HelenKlimova  
#5 Оставлено : 11 июня 2014 г. 6:54:31(UTC)
HelenKlimova

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

Группы: Участники
Зарегистрирован: 10.06.2014(UTC)
Сообщений: 65
Российская Федерация

Сказал(а) «Спасибо»: 5 раз
Автор: afev Перейти к цитате
I. Попробуйте задать пароль на контейнер тут -
вместо
kf.init(ks, null);
сделать
kf.init(ks, <container_password_here>);


У нас нет пароля на контейнере. И даже если устанавливаем, происходит то же самое.

Автор: afev Перейти к цитате
1) настройте логирование (jre/lib/logging.properties)
2) после выполнения запроса поищите в логах certificate request, посмотрите список distinguished names
3) проверьте, есть ли среди клиентских контейнеров (с аутентиф.) тот, у кого issuer есть в списке из п. 2.


Да, есть.

В логах записи:

11.06.2014 9:14:51 ru.CryptoPro.ssl.V a
FINE: Find client container with type: GOST3410EL
11.06.2014 9:14:51 ru.CryptoPro.ssl.V a
FINE: Find client container with type: GOST3410EL
11.06.2014 9:14:51 ru.CryptoPro.ssl.J a
FINE: %% getting aliases for Client
11.06.2014 9:14:51 ru.CryptoPro.ssl.J a
FINE: %% getting aliases for Client
11.06.2014 9:14:51 ru.CryptoPro.ssl.J a
WARNING: %% No alias is match
11.06.2014 9:14:51 ru.CryptoPro.ssl.J a
WARNING: %% No alias is match

Затем происходит обмен ключами, потом

11.06.2014 9:21:26 ru.CryptoPro.ssl.V b
FINE: %% Finished.
11.06.2014 9:21:26 ru.CryptoPro.ssl.V b
FINE: %% Finished.

дальше все - по обычному сценарию, Exception "java.net.SocketException: Software caused connection abort: socket write error"

Какие еще возможны варианты?
Offline Евгений Афанасьев  
#6 Оставлено : 11 июня 2014 г. 9:20:53(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
Автор: afev Перейти к цитате
поищите в логах certificate request

Вероятно, сообщение от клиента certificate message пустое.

Приложите весь лог.

Отредактировано пользователем 11 июня 2014 г. 9:21:47(UTC)  | Причина: Не указана

Offline HelenKlimova  
#7 Оставлено : 11 июня 2014 г. 9:54:41(UTC)
HelenKlimova

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

Группы: Участники
Зарегистрирован: 10.06.2014(UTC)
Сообщений: 65
Российская Федерация

Сказал(а) «Спасибо»: 5 раз
Автор: afev Перейти к цитате

Вероятно, сообщение от клиента certificate message пустое.
Приложите весь лог.


Сообщение не пустое.
Вложение(я):
log.txt (18kb) загружен 9 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
Offline Евгений Афанасьев  
#8 Оставлено : 11 июня 2014 г. 10:01:07(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
Среди клиентских контейнеров есть контейнер с сертификатом, у которого issuer из
Код:

<CN=УЦ ООО «Кредитное бюро Русский Стандарт», C=RU, L=Москва, O=ООО «Кредитное бюро Русский Стандарт», EMAILADDRESS=rscb@rs-cb.ru>
<CN=Microsoft Root Certificate Authority, DC=microsoft, DC=com>
<CN=Microsoft Root Authority, OU=Microsoft Corporation, OU=Copyright (c) 1997 Microsoft Corp.>
<CN=*.bias.ru, O=ООО «БИАС», L=Москва, C=RU, EMAILADDRESS=info@bias.ru>
<CN=Baltimore CyberTrust Root, OU=CyberTrust, O=Baltimore, C=IE>
<CN=Entrust.net Secure Server Certification Authority, OU=(c) 1999 Entrust.net Limited, OU=www.entrust.net/CPS incorp. by ref. (limits liab.), O=Entrust.net, C=US>
<CN=GTE CyberTrust Global Root, OU="GTE CyberTrust Solutions, Inc.", O=GTE Corporation, C=US>
<OU=Class 3 Public Primary Certification Authority, O="VeriSign, Inc.", C=US>
<CN=VeriSign Class 3 Public Primary Certification Authority - G5, OU="(c) 2006 VeriSign, Inc. - For authorized use only", OU=VeriSign Trust Network, O="VeriSign, Inc.", C=US>
<CN=StartCom Certification Authority, OU=Secure Digital Certificate Signing, O=StartCom Ltd., C=IL>
<CN=ЦC ООО «Кредитное бюро Русский Стандарт», DC=ca, DC=rs-cb, DC=ru>
<CN=INTERDEFEND-CA, DC=INTERDEFEND, DC=ru>
<CN=crrs.rs-cb.ua, DC=crrs, DC=rs-cb, DC=ua>
<CN=БКИ «Русский Стандарт» ЦС>
<CN=Центр сертификации ИНТЕР ДЕФЕНД, EMAILADDRESS=info@interdefend.ru, OU=Служба безопсаности, O=ООО «ИНТЕР ДЕФЕНД», L=Москва, C=RU>

?
И без пароля (поскольку вы не задаете пароль), с корректным сроком действия, для аутентификации клиента и на ключе ГОСТ Р 34.10-2001 DH (полагаю, можно отбросить в списке Microsoft Root и т п.).
Думаю, у вашего сертификата должен быть издатель из
Код:

<CN=УЦ ООО «Кредитное бюро Русский Стандарт», C=RU, L=Москва, O=ООО «Кредитное бюро Русский Стандарт», EMAILADDRESS=rscb@rs-cb.ru>
<CN=*.bias.ru, O=ООО «БИАС», L=Москва, C=RU, EMAILADDRESS=info@bias.ru>
<CN=ЦC ООО «Кредитное бюро Русский Стандарт», DC=ca, DC=rs-cb, DC=ru>
<CN=INTERDEFEND-CA, DC=INTERDEFEND, DC=ru>
<CN=crrs.rs-cb.ua, DC=crrs, DC=rs-cb, DC=ua>
<CN=БКИ «Русский Стандарт» ЦС>
<CN=Центр сертификации ИНТЕР ДЕФЕНД, EMAILADDRESS=info@interdefend.ru, OU=Служба безопсаности, O=ООО «ИНТЕР ДЕФЕНД», L=Москва, C=RU>

Отредактировано пользователем 11 июня 2014 г. 10:05:55(UTC)  | Причина: Не указана

Offline HelenKlimova  
#9 Оставлено : 11 июня 2014 г. 10:12:20(UTC)
HelenKlimova

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

Группы: Участники
Зарегистрирован: 10.06.2014(UTC)
Сообщений: 65
Российская Федерация

Сказал(а) «Спасибо»: 5 раз
Автор: afev Перейти к цитате
Среди клиентских контейнеров есть контейнер с сертификатом, у которого issuer из
?
И без пароля (поскольку вы не задаете пароль), с корректным сроком действия, для аутентификации клиента и на ключе ГОСТ Р 34.10-2001 DH (полагаю, можно отбросить в списке Microsoft Root и т п.).


Да, есть. Без пароля, со сроком действия почти еще год - выпущен несколько дней назад. Ключ ГОСТ 34.10-2001.
Мы уже себе голову сломали, что не так.



Offline Евгений Афанасьев  
#10 Оставлено : 11 июня 2014 г. 10:17:31(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
Автор: HelenKlimova Перейти к цитате
Ключ ГОСТ 34.10-2001.

Закрытый ключ с каким алгоритмом отображается (открыть контейнер в панели JCP, выбрать "Ключ" в контейнере, справа на вкладке "Ключ" - тип и алгоритм ключа)?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (2)
3 Страницы123>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.