Atom Лента - Форум КриптоПро - Тема:Вопрос по JCP + CRL - 10Форум КриптоПро - Atom Лентаurn:https:--www-cryptopro-ru:AtomLenta:ForumKriptoPro:Tema:VoprospoJCP+CRL-10:1Copyright 2024 Форум КриптоПро2024-03-19T16:26:06Zhttps://www.cryptopro.ru/forum2/Images/YAFLogo.pngForum Adminhttps://www.cryptopro.ruforum@cryptopro.ruДанзан Лиджиевhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=52802&name=Данзан ЛиджиевДанзан Лиджиевhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=52802&name=Данзан ЛиджиевAlekBormhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=60317&name=AlekBormЕвгений Афанасьевhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=1064&name=Евгений АфанасьевAlekBormhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=60317&name=AlekBormЕвгений Афанасьевhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=1064&name=Евгений АфанасьевNickokowhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=60302&name=NickokowСанчир Момолдаевhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=50915&name=Санчир Момолдаевmstdochttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=54768&name=mstdocСанчир Момолдаевhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=50915&name=Санчир Момолдаевmstdochttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=54768&name=mstdocYetAnotherForum.NETurn:https:--www-cryptopro-ru:ftPosts:st1:meid127445:1Вопрос по JCP + CRL<table class="content postContainer_Alt" width="100%"><tr><td>Работа ведется на портале ТП под №41051</td></tr></table>2021-09-21T15:57:10+03:002021-09-21T15:57:10+03:00Данзан Лиджиев<table class="content postContainer_Alt" width="100%"><tr><td>Работа ведется на портале ТП под №41051</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid127435:1Вопрос по JCP + CRL<table class="content postContainer" width="100%"><tr><td><div class="quote"><span class="quotetitle">Цитата:</span><blockquote>Приведите ошибку.</div></div><br /><br />Логи только такие, расширенные не подключаются, хотя поменял все logging.properties файлы какие нашёл (<br /><br /><br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-java">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)</code></pre>
</div></div></td></tr></table>2021-09-21T09:18:53+03:002021-09-21T09:18:53+03:00AlekBorm<table class="content postContainer" width="100%"><tr><td><div class="quote"><span class="quotetitle">Цитата:</span><blockquote>Приведите ошибку.</div></div><br /><br />Логи только такие, расширенные не подключаются, хотя поменял все logging.properties файлы какие нашёл (<br /><br /><br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-java">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)</code></pre>
</div></div></td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid127420:1Вопрос по JCP + CRL<table class="content postContainer_Alt" width="100%"><tr><td>Здравствуйте.<br /><div class="quote"><span class="quotetitle">Автор: AlekBorm <a href="/forum2/default.aspx?g=posts&m=127403#post127403"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Если закомментирую предпоследнюю строку ( cpp.setRevocationEnabled(true); ) - всё работает. Раскомментирую - ошибка</div></div><br />При закомментированном параметре проверка не выполняется.<br />Приведите ошибку.<br /><br /></td></tr></table>2021-09-20T16:52:40+03:002021-09-20T16:52:40+03:00Евгений Афанасьев<table class="content postContainer_Alt" width="100%"><tr><td>Здравствуйте.<br /><div class="quote"><span class="quotetitle">Автор: AlekBorm <a href="/forum2/default.aspx?g=posts&m=127403#post127403"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Если закомментирую предпоследнюю строку ( cpp.setRevocationEnabled(true); ) - всё работает. Раскомментирую - ошибка</div></div><br />При закомментированном параметре проверка не выполняется.<br />Приведите ошибку.<br /><br /></td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid127403:1Вопрос по JCP + CRL<table class="content postContainer" width="100%"><tr><td>Здравствуйте, в продолжение темы<br /><br />Не получается выполнить проверку сертификата пользователя по списку отозванных, скопированных локально (внешняя сеть закрыта, ocsp сервер тоже нет возможности развернуть).<br /><br />Код взял из примера samples-sources, сертификаты из тестового УЦ. Если закомментирую предпоследнюю строку ( cpp.setRevocationEnabled(true); ) - всё работает. Раскомментирую - ошибка проверки отзыва.<br /><br />Подскажите пожалуйста в чём может быть проблема, или альтернативные варианты решения.<br /><br />Заранее благодарю<br /><br /><br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-java">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");
}
}</code></pre>
</div></div></td></tr></table>2021-09-20T10:49:49+03:002021-09-20T10:49:49+03:00AlekBorm<table class="content postContainer" width="100%"><tr><td>Здравствуйте, в продолжение темы<br /><br />Не получается выполнить проверку сертификата пользователя по списку отозванных, скопированных локально (внешняя сеть закрыта, ocsp сервер тоже нет возможности развернуть).<br /><br />Код взял из примера samples-sources, сертификаты из тестового УЦ. Если закомментирую предпоследнюю строку ( cpp.setRevocationEnabled(true); ) - всё работает. Раскомментирую - ошибка проверки отзыва.<br /><br />Подскажите пожалуйста в чём может быть проблема, или альтернативные варианты решения.<br /><br />Заранее благодарю<br /><br /><br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-java">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");
}
}</code></pre>
</div></div></td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid127359:1Вопрос по JCP + CRL<table class="content postContainer_Alt" width="100%"><tr><td>CRL надо прочитать из файла с помощью X509CRL crl = (X509CRL)CertificateFactory.getInstance("X.509").generateCRL(new FileInputStream(my_crl_file)), поместить crl в Set и передать в verify(...,crl_set).</td></tr></table>2021-09-16T16:35:13+03:002021-09-16T16:35:13+03:00Евгений Афанасьев<table class="content postContainer_Alt" width="100%"><tr><td>CRL надо прочитать из файла с помощью X509CRL crl = (X509CRL)CertificateFactory.getInstance("X.509").generateCRL(new FileInputStream(my_crl_file)), поместить crl в Set и передать в verify(...,crl_set).</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid127352:1Вопрос по JCP + CRL<table class="content postContainer" width="100%"><tr><td>Подниму вопрос. А как передать путь к crl в метод vrefy?</td></tr></table>2021-09-16T14:39:10+03:002021-09-16T14:39:10+03:00Nickokow<table class="content postContainer" width="100%"><tr><td>Подниму вопрос. А как передать путь к crl в метод vrefy?</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid123444:1Вопрос по JCP + CRL<table class="content postContainer_Alt" width="100%"><tr><td>По умолчанию из /var/opt/cprocsp/keys/$USER/<br /><br />Если будет использоваться jcp провайдер то csp не нужен<br />Если javacsp(он же jcsp - враппер над csp) то csp нужен</td></tr></table>2021-03-12T19:59:47+03:002021-03-12T19:59:47+03:00Санчир Момолдаев<table class="content postContainer_Alt" width="100%"><tr><td>По умолчанию из /var/opt/cprocsp/keys/$USER/<br /><br />Если будет использоваться jcp провайдер то csp не нужен<br />Если javacsp(он же jcsp - враппер над csp) то csp нужен</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid123441:1Вопрос по JCP + CRL<table class="content postContainer" width="100%"><tr><td><br /><br />Спасибо за ответы.<br /><br />Еще вопрос возник<br /><div class="quote"><span class="quotetitle">Автор: Санчир Момолдаев <a href="/forum2/default.aspx?g=posts&m=123431#post123431"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Добрый день!<br />CSP и JCP<br />друг от друга не зависят.<br />в метод verify можно передать набор crl</div></div><br /><br />Означает ли это что можно реализовать подписание с помощью jcp не устанавливая csp на сервер?<br />Откуда тогда jcp будет брать ключи для подписания?</td></tr></table>2021-03-12T18:37:16+03:002021-03-12T18:37:16+03:00mstdoc<table class="content postContainer" width="100%"><tr><td><br /><br />Спасибо за ответы.<br /><br />Еще вопрос возник<br /><div class="quote"><span class="quotetitle">Автор: Санчир Момолдаев <a href="/forum2/default.aspx?g=posts&m=123431#post123431"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Добрый день!<br />CSP и JCP<br />друг от друга не зависят.<br />в метод verify можно передать набор crl</div></div><br /><br />Означает ли это что можно реализовать подписание с помощью jcp не устанавливая csp на сервер?<br />Откуда тогда jcp будет брать ключи для подписания?</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid123436:1Вопрос по JCP + CRL<table class="content postContainer_Alt" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: mstdoc <a href="/forum2/default.aspx?g=posts&m=123433#post123433"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Спасибо за ответы.<br /><br /><div class="quote"><span class="quotetitle">Цитата:</span><blockquote>в метод verify можно передать набор crl</div></div><br />Как быть, если набор crl меняется?<br />Сегодня один, завтра пять, послезавтра два.<br />Перекомпилировать приложение каждый раз?<br /></div></div><br />Написать код который будет смотреть в папку брать оттуда crl и передавать в verify<br /><br /><div class="quote"><span class="quotetitle">Автор: mstdoc <a href="/forum2/default.aspx?g=posts&m=123433#post123433"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote><br /><br /><div class="quote"><span class="quotetitle">Цитата:</span><blockquote>да и для csp crl надо устанавливать в правильное хранилище<br />certmgr -inst -store ca -crl -file filename.crl</div></div><br /><br />crl всегда нужно устанавливать в ca или зависит от того какой сертификат - промежуточный или подписанта?</div></div><br />Не зависит. Crl всегда в CA</td></tr></table>2021-03-12T17:45:27+03:002021-03-12T17:45:27+03:00Санчир Момолдаев<table class="content postContainer_Alt" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: mstdoc <a href="/forum2/default.aspx?g=posts&m=123433#post123433"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Спасибо за ответы.<br /><br /><div class="quote"><span class="quotetitle">Цитата:</span><blockquote>в метод verify можно передать набор crl</div></div><br />Как быть, если набор crl меняется?<br />Сегодня один, завтра пять, послезавтра два.<br />Перекомпилировать приложение каждый раз?<br /></div></div><br />Написать код который будет смотреть в папку брать оттуда crl и передавать в verify<br /><br /><div class="quote"><span class="quotetitle">Автор: mstdoc <a href="/forum2/default.aspx?g=posts&m=123433#post123433"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote><br /><br /><div class="quote"><span class="quotetitle">Цитата:</span><blockquote>да и для csp crl надо устанавливать в правильное хранилище<br />certmgr -inst -store ca -crl -file filename.crl</div></div><br /><br />crl всегда нужно устанавливать в ca или зависит от того какой сертификат - промежуточный или подписанта?</div></div><br />Не зависит. Crl всегда в CA</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid123433:1Вопрос по JCP + CRL<table class="content postContainer" width="100%"><tr><td>Спасибо за ответы.<br /><br /><div class="quote"><span class="quotetitle">Цитата:</span><blockquote>в метод verify можно передать набор crl</div></div><br />Как быть, если набор crl меняется?<br />Сегодня один, завтра пять, послезавтра два.<br />Перекомпилировать приложение каждый раз?<br /><br /><br /><div class="quote"><span class="quotetitle">Цитата:</span><blockquote>да и для csp crl надо устанавливать в правильное хранилище<br />certmgr -inst -store ca -crl -file filename.crl</div></div><br /><br />crl всегда нужно устанавливать в ca или зависит от того какой сертификат - промежуточный или подписанта?</td></tr></table>2021-03-12T17:08:57+03:002021-03-12T17:08:57+03:00mstdoc<table class="content postContainer" width="100%"><tr><td>Спасибо за ответы.<br /><br /><div class="quote"><span class="quotetitle">Цитата:</span><blockquote>в метод verify можно передать набор crl</div></div><br />Как быть, если набор crl меняется?<br />Сегодня один, завтра пять, послезавтра два.<br />Перекомпилировать приложение каждый раз?<br /><br /><br /><div class="quote"><span class="quotetitle">Цитата:</span><blockquote>да и для csp crl надо устанавливать в правильное хранилище<br />certmgr -inst -store ca -crl -file filename.crl</div></div><br /><br />crl всегда нужно устанавливать в ca или зависит от того какой сертификат - промежуточный или подписанта?</td></tr></table>