Atom Лента - Форум КриптоПро - Тема:Получение цепочки сертификатов с помощью JCP - 10Форум КриптоПро - Atom Лентаurn:https:--www-cryptopro-ru:AtomLenta:ForumKriptoPro:Tema:Polucheniecepochkisertifikatovspomoshch'juJCP-10:1Copyright 2024 Форум КриптоПро2024-03-29T14:55:06Zhttps://www.cryptopro.ru/forum2/Images/YAFLogo.pngForum Adminhttps://www.cryptopro.ruforum@cryptopro.ruЕвгений Афанасьевhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=1064&name=Евгений АфанасьевЕвгений Афанасьевhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=1064&name=Евгений Афанасьевgluberghttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=65472&name=glubergЕвгений Афанасьевhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=1064&name=Евгений Афанасьевmaximkosheevhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=50493&name=maximkosheevЕвгений Афанасьевhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=1064&name=Евгений Афанасьевmaximkosheevhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=50493&name=maximkosheevЕвгений Афанасьевhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=1064&name=Евгений Афанасьевmaximkosheevhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=50493&name=maximkosheevYetAnotherForum.NETurn:https:--www-cryptopro-ru:ftPosts:st1:meid144116:1Получение цепочки сертификатов с помощью JCP<table class="content postContainer_Alt" width="100%"><tr><td>При условии, что в trust anchors есть нужный корневой, можно с помощью com.sun.security.enableAIAcaIssuers=true и ru.CryptoPro.reprov.enableAIAcaIssuers=true - сертификаты будут скачане по сети, если это возможно.</td></tr></table>2023-11-15T21:59:46+03:002023-11-15T21:59:46+03:00Евгений Афанасьев<table class="content postContainer_Alt" width="100%"><tr><td>При условии, что в trust anchors есть нужный корневой, можно с помощью com.sun.security.enableAIAcaIssuers=true и ru.CryptoPro.reprov.enableAIAcaIssuers=true - сертификаты будут скачане по сети, если это возможно.</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid144036:1Получение цепочки сертификатов с помощью JCP<table class="content postContainer" width="100%"><tr><td>Я только одного не понимаю. Если в самой программе крипто про зайти в свойства сертификата и посмотреть путь, то если промежуточный и корневой не установлены они будут просто красным крестом светиться. Их можно спокойно экспортировать прямо из этой цепочки и установить в хранилища. Каким образом это можно на Java реализовать?</td></tr></table>2023-11-09T10:42:57+03:002023-11-09T10:42:57+03:00gluberg<table class="content postContainer" width="100%"><tr><td>Я только одного не понимаю. Если в самой программе крипто про зайти в свойства сертификата и посмотреть путь, то если промежуточный и корневой не установлены они будут просто красным крестом светиться. Их можно спокойно экспортировать прямо из этой цепочки и установить в хранилища. Каким образом это можно на Java реализовать?</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid107111:1Получение цепочки сертификатов с помощью JCP<table class="content postContainer_Alt" width="100%"><tr><td>Смотрите примеры, что я упомянул ранее. Все корневые (не один) нужно добавить в список TrustAnchor для параметров построения и вообще все сертификаты (корневые, промежуточные, клиентские) добавить в список сертификатов для подачи в pkix parameters, а в target указать клиентский. Цепочка будет построена, если в наличии есть все сертификаты. На всякий случай, если есть доступ в сеть, можно также включить enableaiacaissuers, как выше говорилось, чтобы докачались промежуточные, если возможно.</td></tr></table>2019-09-19T23:56:34+03:002019-09-19T23:56:34+03:00Евгений Афанасьев<table class="content postContainer_Alt" width="100%"><tr><td>Смотрите примеры, что я упомянул ранее. Все корневые (не один) нужно добавить в список TrustAnchor для параметров построения и вообще все сертификаты (корневые, промежуточные, клиентские) добавить в список сертификатов для подачи в pkix parameters, а в target указать клиентский. Цепочка будет построена, если в наличии есть все сертификаты. На всякий случай, если есть доступ в сеть, можно также включить enableaiacaissuers, как выше говорилось, чтобы докачались промежуточные, если возможно.</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid107109:1Получение цепочки сертификатов с помощью JCP<table class="content postContainer" width="100%"><tr><td>Я никак не могу решить для себя вот какую задачу.<br />Есть у пользователя сертификат его ЭЦП. Предположим, у него есть заранее скаченные корневые сертификаты (например, отсюда <a rel="nofollow" href="https://e-trust.gosuslugi.ru/MainCA)" title="https://e-trust.gosuslugi.ru/MainCA)">https://e-trust.gosuslugi.ru/MainCA)</a> в виде *.cer.<br />Как имея сертификат ЭЦП определить какой именно из этих корневых сертификатов входит в цепочку? Неужели нужно попробовать построить цепочки между пользовательским сертификатом и каждым корневым и отлавливать исключения? И если мы наткнулись на такую пару, то это именно тот корневой сертификат, который нам нужен? Речь идет именно про Java<br /></td></tr></table>2019-09-19T22:24:52+03:002019-09-19T22:24:52+03:00maximkosheev<table class="content postContainer" width="100%"><tr><td>Я никак не могу решить для себя вот какую задачу.<br />Есть у пользователя сертификат его ЭЦП. Предположим, у него есть заранее скаченные корневые сертификаты (например, отсюда <a rel="nofollow" href="https://e-trust.gosuslugi.ru/MainCA)" title="https://e-trust.gosuslugi.ru/MainCA)">https://e-trust.gosuslugi.ru/MainCA)</a> в виде *.cer.<br />Как имея сертификат ЭЦП определить какой именно из этих корневых сертификатов входит в цепочку? Неужели нужно попробовать построить цепочки между пользовательским сертификатом и каждым корневым и отлавливать исключения? И если мы наткнулись на такую пару, то это именно тот корневой сертификат, который нам нужен? Речь идет именно про Java<br /></td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid106899:1Получение цепочки сертификатов с помощью JCP<table class="content postContainer_Alt" width="100%"><tr><td>Мастером Windows он выгружается, потому что есть в хранилище (был установлен туда) или ссылка на него есть в предыдущем сертификате. Иначе мастер его не сможет выгрузить, так как неоткуда. В случае с явой trust anchors должны быть заданы, то есть придётся найти в интернете корневые сертификаты и установить в cacerts, иное хранилище или в виде файлов сохранить. На форуме где-то были ссылки на основные корневые сертификаты. </td></tr></table>2019-09-11T22:24:51+03:002019-09-11T22:24:51+03:00Евгений Афанасьев<table class="content postContainer_Alt" width="100%"><tr><td>Мастером Windows он выгружается, потому что есть в хранилище (был установлен туда) или ссылка на него есть в предыдущем сертификате. Иначе мастер его не сможет выгрузить, так как неоткуда. В случае с явой trust anchors должны быть заданы, то есть придётся найти в интернете корневые сертификаты и установить в cacerts, иное хранилище или в виде файлов сохранить. На форуме где-то были ссылки на основные корневые сертификаты. </td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid106897:1Получение цепочки сертификатов с помощью JCP<table class="content postContainer" width="100%"><tr><td>Отчасти помогло, но вот что не понятно.<br />Мой сертификат я могу вытянуть программно с токена - в этой части проблем возникнуть не должно.<br />А вот как получить корневой доверенный сертификат?<br />Как вы правильно заметили <div class="quote"><span class="quotetitle">Цитата:</span><blockquote>при этом должен быть задан доверенный корневой сертификат (либо как сертификат, либо открытый ключ с издателем, см. описание TrustAnchor)</div></div> он должен быть.<br />В примере CRLValidateCert он задается в виде root.cer:<br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-java">Certificate root = cf.generateCertificate(new FileInputStream(PATH + "root.cer"));</code></pre>
</div></div><br />С помощью мастера экспорта сертификатов Windows получить root.cer можно без проблем. А вот как получить root.cer программно?</td></tr></table>2019-09-11T20:47:27+03:002019-09-11T20:47:27+03:00maximkosheev<table class="content postContainer" width="100%"><tr><td>Отчасти помогло, но вот что не понятно.<br />Мой сертификат я могу вытянуть программно с токена - в этой части проблем возникнуть не должно.<br />А вот как получить корневой доверенный сертификат?<br />Как вы правильно заметили <div class="quote"><span class="quotetitle">Цитата:</span><blockquote>при этом должен быть задан доверенный корневой сертификат (либо как сертификат, либо открытый ключ с издателем, см. описание TrustAnchor)</div></div> он должен быть.<br />В примере CRLValidateCert он задается в виде root.cer:<br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-java">Certificate root = cf.generateCertificate(new FileInputStream(PATH + "root.cer"));</code></pre>
</div></div><br />С помощью мастера экспорта сертификатов Windows получить root.cer можно без проблем. А вот как получить root.cer программно?</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid106453:1Получение цепочки сертификатов с помощью JCP<table class="content postContainer_Alt" width="100%"><tr><td>Здравствуйте.<br />Примеры построения и проверки цепочки сертификатов можно найти в samples-sources.jar (в дистрибутиве jcp), файлы OCSPValidateCert и CRLValidateCert. В CRLValidateCert построение осуществляется с помощью CertPathBuilder.build() (дальнейшая часть с validate не требуется, если только построение), при этом должен быть задан доверенный корневой сертификат (либо как сертификат, либо открытый ключ с издателем, см. описание TrustAnchor). target-сертификат - ваш сертификат. Промежуточных может не быть, но, чтобы цепочка была построена<br />1) ссылки на них должны быть в сертификатах (для примера client-CA2-CA1-root: в client - ссылка на промежуточный CA2, в CA2 - ссылка на промежуточный CA1);<br />2) должен быть задан параметр System.setProperty("ru.CryptoPro.reprov.enableAIAcaIssuers", "true"), если используется CertPathBuilder.getInstance("CPPKIX", "RevCheck").<br />В этом случае и при наличии доступа к сети промежуточные сертификаты будут загружены, вся цепочка будет доступна в PKIXCertPathBuilderResult. Далее можно сохранять getEncoded() сертификата.</td></tr></table>2019-08-29T13:00:34+03:002019-08-29T13:00:34+03:00Евгений Афанасьев<table class="content postContainer_Alt" width="100%"><tr><td>Здравствуйте.<br />Примеры построения и проверки цепочки сертификатов можно найти в samples-sources.jar (в дистрибутиве jcp), файлы OCSPValidateCert и CRLValidateCert. В CRLValidateCert построение осуществляется с помощью CertPathBuilder.build() (дальнейшая часть с validate не требуется, если только построение), при этом должен быть задан доверенный корневой сертификат (либо как сертификат, либо открытый ключ с издателем, см. описание TrustAnchor). target-сертификат - ваш сертификат. Промежуточных может не быть, но, чтобы цепочка была построена<br />1) ссылки на них должны быть в сертификатах (для примера client-CA2-CA1-root: в client - ссылка на промежуточный CA2, в CA2 - ссылка на промежуточный CA1);<br />2) должен быть задан параметр System.setProperty("ru.CryptoPro.reprov.enableAIAcaIssuers", "true"), если используется CertPathBuilder.getInstance("CPPKIX", "RevCheck").<br />В этом случае и при наличии доступа к сети промежуточные сертификаты будут загружены, вся цепочка будет доступна в PKIXCertPathBuilderResult. Далее можно сохранять getEncoded() сертификата.</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid106449:1Получение цепочки сертификатов с помощью JCP<table class="content postContainer" width="100%"><tr><td>Добрый день!<br />Возникла следующая задача: добавить в cacerts java информацию о сертификатах, входящих в цепочку.<br />Как бы я решал эту задачу вручную:<br />1. С помощью оснастки "Сертификаты" получил бы цепочку сертификатов (последний закрашенный - мой)<br /><img src="https://www.imageup.ru/img233/3462410/mojj-sertifikat.jpg" alt="Путь сертификации моего сертификата" title="Путь сертификации моего сертификата" class="UserPostedImage" style="max-width:200px;max-height:200px" /><br />2. Выбрал нужный сертификат, например выше стоящий "АО "ПФ "СКБ КОНТУР"<br />3. Нажал на "Просмотр сертификата"<br />4. На аналогичном окне свойств сертификата, но уже для "АО "ПФ "СКБ КОНТУР" на вкладке "Состав" нажал бы "Копировать в файл"<br />5. Запустился бы мастер экспорта сертификата<br />6. Выбрал бы тип файла, например "Файлы X.509(.CER) в кодировке DER" и получил бы готовый файл *.cer<br />7. С помощью утилиты keytool из пакета JRE/JDK импортировал этот файл *.cer в доверенное хранилище cacerts.<br /><br />Выполнив эти действия для всех сертификатов в цепочке, я получил бы то, что мне нужно.<br /><br />Вопрос в том как выполнить действия программно с помощью JCA + JCP (хотябы получить цепочку и экспортировать в файлы) без мастеров Windows?<br /><br />Буду благодарен за любую помощь или направление куда "копать". </td></tr></table>2019-08-29T12:12:44+03:002019-08-29T12:12:44+03:00maximkosheev<table class="content postContainer" width="100%"><tr><td>Добрый день!<br />Возникла следующая задача: добавить в cacerts java информацию о сертификатах, входящих в цепочку.<br />Как бы я решал эту задачу вручную:<br />1. С помощью оснастки "Сертификаты" получил бы цепочку сертификатов (последний закрашенный - мой)<br /><img src="https://www.imageup.ru/img233/3462410/mojj-sertifikat.jpg" alt="Путь сертификации моего сертификата" title="Путь сертификации моего сертификата" class="UserPostedImage" style="max-width:200px;max-height:200px" /><br />2. Выбрал нужный сертификат, например выше стоящий "АО "ПФ "СКБ КОНТУР"<br />3. Нажал на "Просмотр сертификата"<br />4. На аналогичном окне свойств сертификата, но уже для "АО "ПФ "СКБ КОНТУР" на вкладке "Состав" нажал бы "Копировать в файл"<br />5. Запустился бы мастер экспорта сертификата<br />6. Выбрал бы тип файла, например "Файлы X.509(.CER) в кодировке DER" и получил бы готовый файл *.cer<br />7. С помощью утилиты keytool из пакета JRE/JDK импортировал этот файл *.cer в доверенное хранилище cacerts.<br /><br />Выполнив эти действия для всех сертификатов в цепочке, я получил бы то, что мне нужно.<br /><br />Вопрос в том как выполнить действия программно с помощью JCA + JCP (хотябы получить цепочку и экспортировать в файлы) без мастеров Windows?<br /><br />Буду благодарен за любую помощь или направление куда "копать". </td></tr></table>