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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline mstdoc  
#1 Оставлено : 12 марта 2021 г. 16:13:45(UTC)
mstdoc

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

Группы: Участники
Зарегистрирован: 25.11.2019(UTC)
Сообщений: 28

Сказал(а) «Спасибо»: 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 в локальном хранилище, а потом уже идти во внешний мир?
Offline Санчир Момолдаев  
#2 Оставлено : 12 марта 2021 г. 16:56:59(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 68 раз
Поблагодарили: 158 раз в 154 постах
Добрый день!
CSP и JCP
друг от друга не зависят.
в метод verify можно передать набор crl
Техническую поддержку оказываем тут
Наша база знаний
Offline Санчир Момолдаев  
#3 Оставлено : 12 марта 2021 г. 16:58:35(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 68 раз
Поблагодарили: 158 раз в 154 постах
да и для csp crl надо устанавливать в правильное хранилище
certmgr -inst -store ca -crl -file filename.crl
Техническую поддержку оказываем тут
Наша база знаний
Offline mstdoc  
#4 Оставлено : 12 марта 2021 г. 17:08:57(UTC)
mstdoc

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

Группы: Участники
Зарегистрирован: 25.11.2019(UTC)
Сообщений: 28

Сказал(а) «Спасибо»: 1 раз
Спасибо за ответы.

Цитата:
в метод verify можно передать набор crl

Как быть, если набор crl меняется?
Сегодня один, завтра пять, послезавтра два.
Перекомпилировать приложение каждый раз?


Цитата:
да и для csp crl надо устанавливать в правильное хранилище
certmgr -inst -store ca -crl -file filename.crl


crl всегда нужно устанавливать в ca или зависит от того какой сертификат - промежуточный или подписанта?
Offline Санчир Момолдаев  
#5 Оставлено : 12 марта 2021 г. 17:45:27(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 68 раз
Поблагодарили: 158 раз в 154 постах
Автор: mstdoc Перейти к цитате
Спасибо за ответы.

Цитата:
в метод verify можно передать набор crl

Как быть, если набор crl меняется?
Сегодня один, завтра пять, послезавтра два.
Перекомпилировать приложение каждый раз?

Написать код который будет смотреть в папку брать оттуда crl и передавать в verify

Автор: mstdoc Перейти к цитате


Цитата:
да и для csp crl надо устанавливать в правильное хранилище
certmgr -inst -store ca -crl -file filename.crl


crl всегда нужно устанавливать в ca или зависит от того какой сертификат - промежуточный или подписанта?

Не зависит. Crl всегда в CA
Техническую поддержку оказываем тут
Наша база знаний
Offline mstdoc  
#6 Оставлено : 12 марта 2021 г. 18:37:16(UTC)
mstdoc

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

Группы: Участники
Зарегистрирован: 25.11.2019(UTC)
Сообщений: 28

Сказал(а) «Спасибо»: 1 раз


Спасибо за ответы.

Еще вопрос возник
Автор: Санчир Момолдаев Перейти к цитате
Добрый день!
CSP и JCP
друг от друга не зависят.
в метод verify можно передать набор crl


Означает ли это что можно реализовать подписание с помощью jcp не устанавливая csp на сервер?
Откуда тогда jcp будет брать ключи для подписания?
Offline Санчир Момолдаев  
#7 Оставлено : 12 марта 2021 г. 19:59:47(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 68 раз
Поблагодарили: 158 раз в 154 постах
По умолчанию из /var/opt/cprocsp/keys/$USER/

Если будет использоваться jcp провайдер то csp не нужен
Если javacsp(он же jcsp - враппер над csp) то csp нужен
Техническую поддержку оказываем тут
Наша база знаний
Offline Nickokow  
#8 Оставлено : 16 сентября 2021 г. 14:39:10(UTC)
Nickokow

Статус: Новичок

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

Подниму вопрос. А как передать путь к crl в метод vrefy?
Offline Евгений Афанасьев  
#9 Оставлено : 16 сентября 2021 г. 16:35:13(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 590 раз в 560 постах
CRL надо прочитать из файла с помощью X509CRL crl = (X509CRL)CertificateFactory.getInstance("X.509").generateCRL(new FileInputStream(my_crl_file)), поместить crl в Set и передать в verify(...,crl_set).
Offline AlekBorm  
#10 Оставлено : 20 сентября 2021 г. 10:49:49(UTC)
AlekBorm

Статус: Новичок

Группы: Участники
Зарегистрирован: 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");
}

}
Offline Евгений Афанасьев  
#11 Оставлено : 20 сентября 2021 г. 16:52:40(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 590 раз в 560 постах
Здравствуйте.
Автор: AlekBorm Перейти к цитате
Если закомментирую предпоследнюю строку ( cpp.setRevocationEnabled(true); ) - всё работает. Раскомментирую - ошибка

При закомментированном параметре проверка не выполняется.
Приведите ошибку.

Offline AlekBorm  
#12 Оставлено : 21 сентября 2021 г. 9:18:53(UTC)
AlekBorm

Статус: Новичок

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

Цитата:
Приведите ошибку.


Логи только такие, расширенные не подключаются, хотя поменял все logging.properties файлы какие нашёл (


Код:
WARN : 09:12:04,190  - TcLogger$IC_PrintStream.log:?
OK-1

ERROR: 09:12:04,237  - TcLogger$IC_PrintStream.logButCheckForException:?
java.security.cert.CertPathValidatorException
java.security.cert.CertPathValidatorException: Could not determine revocation status
	at sun.security.provider.certpath.PKIXMasterCertPathValidator.validate(Unknown Source)
	at sun.security.provider.certpath.PKIXCertPathValidator.validate(Unknown Source)
	at sun.security.provider.certpath.PKIXCertPathValidator.validate(Unknown Source)
	at sun.security.provider.certpath.PKIXCertPathValidator.engineValidate(Unknown Source)
	at java.security.cert.CertPathValidator.validate(Unknown Source)
	at ru.CryptoPro.reprov.CPCertPathValidator.engineValidate(Unknown Source)
	at java.security.cert.CertPathValidator.validate(Unknown Source)
Offline Данзан Лиджиев  
#13 Оставлено : 21 сентября 2021 г. 15:57:10(UTC)
Данзан Лиджиев

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

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

Поблагодарили: 1 раз в 1 постах
Работа ведется на портале ТП под №41051
Техническую поддержку оказываем тут.
Наша база знаний.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.