Статус: Участник
Группы: Участники
Зарегистрирован: 21.09.2018(UTC) Сообщений: 24  Сказал(а) «Спасибо»: 9 раз
|
Просто у нас следующая ситуация, и не понятно, как её правильно разрешить: Есть JKS-хранилище, наполненное открытыми сертификатами от разных подписантов. Среди них есть как публичные (для верификации подписи), так могут быть и промежуточные, и корневые. Все сертификары в хранилище собраны по группам по подписанту, но мы можем навернка определить только группу и публиный сертификат, а вот корневой в группе - не можем! 1.В этом случае не понтно, как устанавливать TrustAnchor? Видимо для каждой группы сертификатов как-то нужно определить root? 2.Я правильно понимаю, что target-сертификат из вашего последнего ответа устанавливается в первом примере с помощью кода: Цитата:final X509CertSelector selector = new X509CertSelector(); selector.setCertificate((X509Certificate) user); cpp.setTargetCertConstraints(selector);
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,005  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Автор: Capfunny  Просто у нас следующая ситуация, и не понятно, как её правильно разрешить: Есть JKS-хранилище, наполненное открытыми сертификатами от разных подписантов. Среди них есть как публичные (для верификации подписи), так могут быть и промежуточные, и корневые. Все сертификары в хранилище собраны по группам по подписанту, но мы можем навернка определить только группу и публиный сертификат, а вот корневой в группе - не можем! 1.В этом случае не понтно, как устанавливать TrustAnchor? Видимо для каждой группы сертификатов как-то нужно определить root? 2.Я правильно понимаю, что target-сертификат из вашего последнего ответа устанавливается в первом примере с помощью кода: Цитата:final X509CertSelector selector = new X509CertSelector(); selector.setCertificate((X509Certificate) user); cpp.setTargetCertConstraints(selector); 1. Если вы знаете того, для кого нужно построить цепочку (т.е. target), то прочитайте сертификаты из JKS хранилища, разделите их на корневые (самоподписанные, cert.issuer==cert.subject и cert.getBasicConstraints() != -1), и другие (промежуточные и т.п.). Корневые добавьте в trust anhors, вообще все сертификаты - в CertStore-список (в примере в начале переписки), с помощью функции addCertStore. Далее стройте для target-сертификата цепочку. Можно еще поискать список наиболее распространенных корневых сертификатов (Головной Удостоверяющий Центр и т.п.). 2. Да. Отредактировано пользователем 22 января 2019 г. 9:42:22(UTC)
| Причина: Не указана |
|
 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 29.01.2019(UTC) Сообщений: 2  Откуда: москва
|
А есть ли возможность не проверять просроченность сертификата и всё равно построить цепочку?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,005  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Разве что задавать setDate(дата) у параметров для передачи в build. |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 29.01.2019(UTC) Сообщений: 2  Откуда: москва
|
да именно так и можно, а дату можно дернуть из серификата который использиется для селектора. Спасибо
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 21.09.2018(UTC) Сообщений: 24  Сказал(а) «Спасибо»: 9 раз
|
Здравствуйте, Евгений! Возникла странная ситуация: Идёт проверка цепочки сертификатов, возникает следующая ошибка: 13-May-2019 14:22:52.898 WARNING [http-nio-8080-exec-48] ru.CryptoPro.reprov.certpath.URICertStore.engineGetCertificates Exception fetching certificates: java.io.FileNotFoundException: http://testgost2012.cp.ru/CertEnroll/root2018.crtТо есть цепочку JCP восстановить не может, но почему-то возвращает положительный результат проверки! Правильно ли это? Кроме того, хотелось бы понять, как можно уменьшить время таймаута при проверки цепочки?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,005  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Здравствуйте. Это сообщение - warning, предупреждение, не ошибка. Вероятно, файл по указанному адресу не доступен и был скачан по другому. Не понял на счет "цепочку JCP восстановить не может", уточните, пожалуйста. Под "уменьшить время таймаута" подразумевается уменьшение какого-то конкретного таймаута или времени проверки? Если второе, то оно зависит от кол-ва обращений в сеть за сертификатами/CRL и параметров, относящихся к сети, тут вряд ли что-то можно ускорить.
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 21.09.2018(UTC) Сообщений: 24  Сказал(а) «Спасибо»: 9 раз
|
Евгений, спасибо за ответы. Под временем таймаута подразумевается время ожидания ответа от сервера удостоверяющего центра. В нашем случае - http://testgost2012.cp.ru/CertEnroll/root2018.crtПросто у нас происходит какая-то нездоровая фигня – попытка получения цепочки сертификатов именно по указанному выше URL (URL берётся из сертификата) занимает до 20 минут! Это неудовлетворительный результат! :(
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,005  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Проверим, в браузере он скачивается быстро, хотя подозреваю, что и в программно у меня он загрузится также быстро (возможно, есть какие-то сетевые особенности на вашей стороне, которые мы не сможем поспроизвести). Из быстрых решений: кешировать корневые сертификаты где-нибудь (CertStore, JKS, BKS и т.п.), тогда они будут у вас и грузить не надо будет (можно будет подавать в addStore у PKIX...Parameters для build или validate операций). |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 21.09.2018(UTC) Сообщений: 24  Сказал(а) «Спасибо»: 9 раз
|
Автор: Евгений Афанасьев  Проверим, в браузере он скачивается быстро, хотя подозреваю, что и в программно у меня он загрузится также быстро Евгений, указанный мной узел - http://testgost2012.cp.ru/CertEnroll/root2018.crt - узел мёртвый! Оттуда никак ничего скачать невозможно! Вот и складывается впечатление, что JCP подвисает, повторяя попытки запроса к мёртвому узлу! Поэтому и спрашивал про таймаут. По поводу вот этого: Цитата:можно будет подавать в addStore у PKIX...Parameters для build или validate операций - не совсем понял. Корневые сертификаты в хранилище храню, подаю их в списке certificates, и осуществляю дальнейшую проверку цепочки, как указано в коде ниже: Код:inal Set<TrustAnchor> trust = new HashSet<TrustAnchor>(1);
trust.add(new TrustAnchor((X509Certificate) rootcert, null));
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);
final CertPath cp = res.getCertPath();
// Проверка цепочки.
final CertPathValidator cpv = CertPathValidator.getInstance("CPPKIX", "RevCheck");
cpp.setRevocationEnabled(true);
cpv.validate(cp, cpp);
//окончание кода с форума JCP
//если всё хорошо - возвращаем true, иначе проверка падает с ошибкой!
result = true;
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close