Статус: Активный участник
Группы: Участники
Зарегистрирован: 25.11.2019(UTC) Сообщений: 54
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 1 раз в 1 постах
|
Добрый день. Прошу помощи с вопросом по jcp + crl. Добавляю сrl в хранилище крипто про вот так: Код:certmgr -install -crl -file /tmp/guc_gost12.crl
Crl добавляется в хранилище: Код:# certmgr -list -crl
Certmgr 1.1 (c) "Crypto-Pro", 2007-2019.
program for managing certificates, CRLs and stores
=============================================================================
1-------
Issuer : E=dit@minsvyaz.ru, C=RU, S=77 Москва, L=г. Москва, STREET="улица Тверская, дом 7", O=Минкомсвязь России, OGRN=1047702026701, INN=007710474375, CN=Минкомсвязь России
ThisUpdate: 10/03/2021 06:27:36 UTC
NextUpdate: 09/04/2021 06:27:36 UTC
AuthKeyID : c254f1b46bd44cb7e06d36b42390f1fec33c9b06
=============================================================================
После этого пытаюсь с помощью jcp проверить подпись. При этом в дампе вижу запросы в сторону http://reestr-pki.ru/cdp/guc_gost12.crlПравильно ли я понимаю что jcp не смотрит в локальное хранилище crl, а пытается проверить его онлайн? Можно ли как-то заставить jcp сначала искать crl в локальном хранилище, а потом уже идти во внешний мир?
|
|
|
|
Статус: Сотрудник
Группы: Модератор, Участники Зарегистрирован: 03.12.2018(UTC) Сообщений: 1,193 Сказал(а) «Спасибо»: 100 раз Поблагодарили: 274 раз в 254 постах
|
Добрый день! CSP и JCP друг от друга не зависят. в метод verify можно передать набор crl |
|
|
|
|
Статус: Сотрудник
Группы: Модератор, Участники Зарегистрирован: 03.12.2018(UTC) Сообщений: 1,193 Сказал(а) «Спасибо»: 100 раз Поблагодарили: 274 раз в 254 постах
|
да и для csp crl надо устанавливать в правильное хранилище certmgr -inst -store ca -crl -file filename.crl |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 25.11.2019(UTC) Сообщений: 54
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 1 раз в 1 постах
|
Спасибо за ответы. Цитата:в метод verify можно передать набор crl Как быть, если набор crl меняется? Сегодня один, завтра пять, послезавтра два. Перекомпилировать приложение каждый раз? Цитата:да и для csp crl надо устанавливать в правильное хранилище certmgr -inst -store ca -crl -file filename.crl crl всегда нужно устанавливать в ca или зависит от того какой сертификат - промежуточный или подписанта?
|
|
|
|
Статус: Сотрудник
Группы: Модератор, Участники Зарегистрирован: 03.12.2018(UTC) Сообщений: 1,193 Сказал(а) «Спасибо»: 100 раз Поблагодарили: 274 раз в 254 постах
|
Автор: mstdoc Спасибо за ответы. Цитата:в метод verify можно передать набор crl Как быть, если набор crl меняется? Сегодня один, завтра пять, послезавтра два. Перекомпилировать приложение каждый раз? Написать код который будет смотреть в папку брать оттуда crl и передавать в verify Автор: mstdoc Цитата:да и для csp crl надо устанавливать в правильное хранилище certmgr -inst -store ca -crl -file filename.crl crl всегда нужно устанавливать в ca или зависит от того какой сертификат - промежуточный или подписанта? Не зависит. Crl всегда в CA |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 25.11.2019(UTC) Сообщений: 54
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 1 раз в 1 постах
|
Спасибо за ответы. Еще вопрос возник Автор: Санчир Момолдаев Добрый день! CSP и JCP друг от друга не зависят. в метод verify можно передать набор crl Означает ли это что можно реализовать подписание с помощью jcp не устанавливая csp на сервер? Откуда тогда jcp будет брать ключи для подписания?
|
|
|
|
Статус: Сотрудник
Группы: Модератор, Участники Зарегистрирован: 03.12.2018(UTC) Сообщений: 1,193 Сказал(а) «Спасибо»: 100 раз Поблагодарили: 274 раз в 254 постах
|
По умолчанию из /var/opt/cprocsp/keys/$USER/
Если будет использоваться jcp провайдер то csp не нужен Если javacsp(он же jcsp - враппер над csp) то csp нужен |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 16.09.2021(UTC) Сообщений: 3 Откуда: Ekb
|
Подниму вопрос. А как передать путь к crl в метод vrefy?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,963 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
CRL надо прочитать из файла с помощью X509CRL crl = (X509CRL)CertificateFactory.getInstance("X.509").generateCRL(new FileInputStream(my_crl_file)), поместить crl в Set и передать в verify(...,crl_set). |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 20.09.2021(UTC) Сообщений: 2 Откуда: Москва
|
Здравствуйте, в продолжение темы Не получается выполнить проверку сертификата пользователя по списку отозванных, скопированных локально (внешняя сеть закрыта, ocsp сервер тоже нет возможности развернуть). Код взял из примера samples-sources, сертификаты из тестового УЦ. Если закомментирую предпоследнюю строку ( cpp.setRevocationEnabled(true); ) - всё работает. Раскомментирую - ошибка проверки отзыва. Подскажите пожалуйста в чём может быть проблема, или альтернативные варианты решения. Заранее благодарю Код:public static void validateCert(X509Certificate certificate) throws Exception {
// - проверка на срок действия
Date currentDate = new Date();
if( ! (certificate.getNotBefore().before(currentDate) && certificate.getNotAfter().after(currentDate)) ) {
MessageBox.post("Срок действия сертификата истёк, или не начал действовать", "Ошибка!", MessageBox.ERROR);
throw new Exception("Просроченный сертификат");
}
else {
System.setProperty("ru.CryptoPro.reprov.enableCRLDP", "false");
System.setProperty("com.sun.security.enableCRLDP", "false");
System.setProperty("com.ibm.security.enableCRLDP", "false");
System.setProperty("ocsp.enable", "false");
System.setProperty("com.sun.net.ssl.checkRevocation", "false");
final CertificateFactory cf = CertificateFactory.getInstance("X509");
final Certificate user = certificate;
Certificate root_test = cf.generateCertificate(new FileInputStream(new File("").getAbsolutePath() + "\\CertificatesStore\\certnew.cer"));
final Certificate[] certs = new Certificate[2];
certs[0] = user;
certs[1] = root_test;
final Set<TrustAnchor> trust = new HashSet<TrustAnchor>(1);
trust.add(new TrustAnchor((X509Certificate) root_test, null));
final List cert = new ArrayList(0);
for (int i = 0; i < certs.length; i++)
cert.add(certs[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) user);
cpp.setTargetCertConstraints(selector);
cpp.setRevocationEnabled(false);
// - списки отзывов
Set<X509CRL> crlListForCheck = new HashSet<>();
X509CRL crl_ = (X509CRL) CertificateFactory.getInstance("X.509").generateCRL(new FileInputStream(new File("").getAbsolutePath() + "\\CertificatesStore\\certcrl.crl"));
crlListForCheck.add(crl_);
final CollectionCertStoreParameters parCrl =
new CollectionCertStoreParameters(crlListForCheck); //certs
// создание специального хранилища отзывов сертификатов на основе
// параметров, определенных списком сертификатов
final CertStore storeCrl = CertStore.getInstance("Collection", parCrl);
cpp.addCertStore(storeCrl);
// Построение цепочки.
final PKIXCertPathBuilderResult res =
(PKIXCertPathBuilderResult) CertPathBuilder.
getInstance("CPPKIX", "RevCheck").build(cpp);
final CertPath cp = res.getCertPath();
System.out.println("OK-1");
// Проверка цепочки.
final CertPathValidator cpv = CertPathValidator.getInstance("CPPKIX", "RevCheck");
//cpp.setRevocationEnabled(true);
cpv.validate(cp, cpp);
System.out.println("OK-2");
}
}
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close