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

Уведомление

Icon
Error

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

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
Автор: Capfunny Перейти к цитате
Оттуда никак ничего скачать невозможно!
Вот и складывается впечатление, что JCP подвисает, повторяя попытки запроса к мёртвому узлу! Поэтому и спрашивал про таймаут.

В следующей версии добавим таймаут подключения к url для скачивания сертификатов по аналогии с CRL.
Offline Capfunny  
#22 Оставлено : 15 мая 2019 г. 16:06:01(UTC)
Capfunny

Статус: Участник

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

Сказал(а) «Спасибо»: 9 раз
Спасибо, Евгений, будем ждать обновлений.
Ну а пока видимо самим придется имитировать вызов функционала проверки цепочки с таймаутом.
Offline Евгений Афанасьев  
#23 Оставлено : 15 мая 2019 г. 16:10:28(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
Не могли бы вы приложить клиентский сертификат, для которого строится цепочка и с которым возникает эта проблема?
thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
Capfunny оставлено 16.05.2019(UTC)
Offline two_oceans  
#24 Оставлено : 16 мая 2019 г. 6:50:06(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,602
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 366 постах
Даже если узел мертвый (или скажем имя указывает на локальный адрес в сети какого-то ведомства, недоступный через интернет), если сертификат без проблем скачивается с другого адреса, то можно уже средствами системного администрирования перенаправить на правильный адрес.

Если узлы разные, а пути совпадают в рабочем и нерабочем урл, достаточно завернуть ия мертвого узла в hosts на правильный ip. Или поднять в сети Apache и либо положить на него сертификат (так как сертификат как правило не меняется в отличие от списков отзыва) либо настроить обратный прокси (чтобы апач по своему адресу в одной папке отдавал содержимое папки другого сайта), затем в hosts указать соответствие адреса сервера поднятому. Или использовать старый прокси Проксомитрон, который может отдать локальный файл как если он пришел из интернета. Или наоборот не отдавать, чтобы вернулось 404 Not found без таймаута. Или настроить в брандмауэре возврат отказа при обращении к определенному узлу.

Понятно, что в продакшене лучше без таких костылей, но если у Вас сетификат тестового УЦ, который в продакшен не пойдет, то способов немало.

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

thanks 1 пользователь поблагодарил two_oceans за этот пост.
Capfunny оставлено 16.05.2019(UTC)
Offline Capfunny  
#25 Оставлено : 16 мая 2019 г. 17:46:23(UTC)
Capfunny

Статус: Участник

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

Сказал(а) «Спасибо»: 9 раз
Господа, с таймаутом разобрались! Действительно проблема была на нашей стороне (сетевая безопасность).
Теперь же страдаем от следующей ошибки:

certificates - массив сертификатов Certificate[], считываемый из JKS.

Код:
            final List cert = new ArrayList(0);
            for (int i = 0; i < certificates.length; i++)
                cert.add(certificates[i]);

            final PKIXBuilderParameters cpp = new PKIXBuilderParameters(trust, null);
            cpp.setSigProvider(null);

            final CollectionCertStoreParameters par =  new CollectionCertStoreParameters(cert);

            final CertStore store = CertStore.getInstance("Collection", par);
            cpp.addCertStore(store);

            final X509CertSelector selector = new X509CertSelector();
            selector.setCertificate((X509Certificate) targercert);

            cpp.setTargetCertConstraints(selector);
            cpp.setRevocationEnabled(false);

            // Построение цепочки.
            final PKIXCertPathBuilderResult res = (PKIXCertPathBuilderResult) CertPathBuilder.getInstance("CPPKIX", "RevCheck").build(cpp);


На последней строке код падает с ошибкой:
Код:
        java.security.cert.CertificateException: Unable to initialize, java.io.IOException: Short read of DER length
	at sun.security.x509.X509CertImpl.<init>(Unknown Source) ~[na:1.8.0_201]
	at sun.security.provider.X509Factory.parseX509orPKCS7Cert(Unknown Source) ~[na:1.8.0_201]
	at sun.security.provider.X509Factory.engineGenerateCertificates(Unknown Source) ~[na:1.8.0_201]
	at java.security.cert.CertificateFactory.generateCertificates(Unknown Source) ~[na:1.8.0_201]
	at ru.CryptoPro.reprov.certpath.URICertStore.engineGetCertificates(Unknown Source) [JCPRevCheck.jar:40035]
	at java.security.cert.CertStore.getCertificates(Unknown Source) [na:1.8.0_201]
	at ru.CryptoPro.reprov.certpath.ForwardBuilder.a(Unknown Source) [JCPRevCheck.jar:40035]
	at ru.CryptoPro.reprov.certpath.ForwardBuilder.b(Unknown Source) [JCPRevCheck.jar:40035]
	at ru.CryptoPro.reprov.certpath.ForwardBuilder.a(Unknown Source) [JCPRevCheck.jar:40035]
	at ru.CryptoPro.reprov.certpath.SunCertPathBuilder.a(Unknown Source) [JCPRevCheck.jar:40035]
	at ru.CryptoPro.reprov.certpath.SunCertPathBuilder.a(Unknown Source) [JCPRevCheck.jar:40035]
	at ru.CryptoPro.reprov.certpath.SunCertPathBuilder.a(Unknown Source) [JCPRevCheck.jar:40035]
	at ru.CryptoPro.reprov.certpath.SunCertPathBuilder.a(Unknown Source) [JCPRevCheck.jar:40035]
	at ru.CryptoPro.reprov.certpath.SunCertPathBuilder.engineBuild(Unknown Source) [JCPRevCheck.jar:40035]
	at ru.CryptoPro.reprov.CPCertPathBuilder.engineBuild(Unknown Source) [JCPRevCheck.jar:40035]
	at java.security.cert.CertPathBuilder.build(Unknown Source) [na:1.8.0_201]
        и т.д.


Не подскажете, что это может быть?
Заранее хочу сказать, что без проверки всей цепочки сама ЭЦП прекрасно верифицируется по данным сертификатам.

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

Offline Евгений Афанасьев  
#26 Оставлено : 16 мая 2019 г. 18:21:15(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
Похоже на то, что при скачивании приходит по ссылке не сертификат, что-то другое, что нельзя декодировать, как сертификат.
Offline Capfunny  
#27 Оставлено : 17 мая 2019 г. 10:38:03(UTC)
Capfunny

Статус: Участник

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

Сказал(а) «Спасибо»: 9 раз
Автор: Евгений Афанасьев Перейти к цитате
Похоже на то, что при скачивании приходит по ссылке не сертификат, что-то другое, что нельзя декодировать, как сертификат.


Евгений, а разве скачивание происходит в строке:
Код:
  final PKIXCertPathBuilderResult res = (PKIXCertPathBuilderResult) CertPathBuilder.getInstance("CPPKIX", "RevCheck").build(cpp);


И, кстати, а зачем вообще скачиваются сертификаты, когда в cpp уже передана вся цепочка сертификатов?
Offline Евгений Афанасьев  
#28 Оставлено : 17 мая 2019 г. 10:48:38(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
System.setProperty("ru.CryptoPro.reprov.enableAIAcaIssuers", "true") имеется в коде?
Offline Capfunny  
#29 Оставлено : 17 мая 2019 г. 11:20:24(UTC)
Capfunny

Статус: Участник

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

Сказал(а) «Спасибо»: 9 раз
Автор: Евгений Афанасьев Перейти к цитате
System.setProperty("ru.CryptoPro.reprov.enableAIAcaIssuers", "true") имеется в коде?


Нет, такой строчки нет. Я правильно понимаю, что этот параметр отключает скачивание сертификатов, но скачивание CRL остаётся?

И, кстати, а как определить, что нами передаётся полная цепочка? А то мало ли...

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

Offline Евгений Афанасьев  
#30 Оставлено : 17 мая 2019 г. 14:43:02(UTC)
Евгений Афанасьев

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

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

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