Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,005  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Автор: Capfunny  Оттуда никак ничего скачать невозможно! Вот и складывается впечатление, что JCP подвисает, повторяя попытки запроса к мёртвому узлу! Поэтому и спрашивал про таймаут.
В следующей версии добавим таймаут подключения к url для скачивания сертификатов по аналогии с CRL. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 21.09.2018(UTC) Сообщений: 24  Сказал(а) «Спасибо»: 9 раз
|
Спасибо, Евгений, будем ждать обновлений. Ну а пока видимо самим придется имитировать вызов функционала проверки цепочки с таймаутом.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,005  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Не могли бы вы приложить клиентский сертификат, для которого строится цепочка и с которым возникает эта проблема? |
|
 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602  Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 395 раз в 366 постах
|
Даже если узел мертвый (или скажем имя указывает на локальный адрес в сети какого-то ведомства, недоступный через интернет), если сертификат без проблем скачивается с другого адреса, то можно уже средствами системного администрирования перенаправить на правильный адрес. Если узлы разные, а пути совпадают в рабочем и нерабочем урл, достаточно завернуть ия мертвого узла в hosts на правильный ip. Или поднять в сети Apache и либо положить на него сертификат (так как сертификат как правило не меняется в отличие от списков отзыва) либо настроить обратный прокси (чтобы апач по своему адресу в одной папке отдавал содержимое папки другого сайта), затем в hosts указать соответствие адреса сервера поднятому. Или использовать старый прокси Проксомитрон, который может отдать локальный файл как если он пришел из интернета. Или наоборот не отдавать, чтобы вернулось 404 Not found без таймаута. Или настроить в брандмауэре возврат отказа при обращении к определенному узлу. Понятно, что в продакшене лучше без таких костылей, но если у Вас сетификат тестового УЦ, который в продакшен не пойдет, то способов немало. Отредактировано пользователем 16 мая 2019 г. 6:56:42(UTC)
| Причина: Не указана
|
 1 пользователь поблагодарил two_oceans за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 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)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,005  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Похоже на то, что при скачивании приходит по ссылке не сертификат, что-то другое, что нельзя декодировать, как сертификат. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 21.09.2018(UTC) Сообщений: 24  Сказал(а) «Спасибо»: 9 раз
|
Автор: Евгений Афанасьев  Похоже на то, что при скачивании приходит по ссылке не сертификат, что-то другое, что нельзя декодировать, как сертификат. Евгений, а разве скачивание происходит в строке: Код: final PKIXCertPathBuilderResult res = (PKIXCertPathBuilderResult) CertPathBuilder.getInstance("CPPKIX", "RevCheck").build(cpp);
И, кстати, а зачем вообще скачиваются сертификаты, когда в cpp уже передана вся цепочка сертификатов?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,005  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
System.setProperty("ru.CryptoPro.reprov.enableAIAcaIssuers", "true") имеется в коде? |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 21.09.2018(UTC) Сообщений: 24  Сказал(а) «Спасибо»: 9 раз
|
Автор: Евгений Афанасьев  System.setProperty("ru.CryptoPro.reprov.enableAIAcaIssuers", "true") имеется в коде? Нет, такой строчки нет. Я правильно понимаю, что этот параметр отключает скачивание сертификатов, но скачивание CRL остаётся? И, кстати, а как определить, что нами передаётся полная цепочка? А то мало ли... Отредактировано пользователем 17 мая 2019 г. 14:39:50(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,005  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Приложите сертификат или цепочку, посмотрим. enableAIAcaIssuers включает возможность скачать сертификат по ссылке в сертификате, например, чтобы докачать промежуточные сертификаты. Если он включен, то будет выполняться скачивание. Обычно он выключен. Определить полноту цепочки можно, только построив ее.
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close