<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Форум Рутокен &mdash; Java экспорт сертификата с ruToken]]></title>
		<link>https://forum.rutoken.ru/topic/3110/</link>
		<atom:link href="https://forum.rutoken.ru/feed/rss/topic/3110/" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Java экспорт сертификата с ruToken».]]></description>
		<lastBuildDate>Fri, 27 Dec 2019 06:33:00 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Java экспорт сертификата с ruToken]]></title>
			<link>https://forum.rutoken.ru/post/13807/#p13807</link>
			<description><![CDATA[<div class="quotebox"><cite>MihCools пишет:</cite><blockquote><p>Здравствуйте, да Крипто-Про GOST R34.10-2001<br />Я так понимаю чтобы извлечь необходим провайдер Крипто-про ?</p></blockquote></div><p>Экспорт сертификата можно произвести с помощью &quot;Панели управления Рутокен&quot; - вкладка &quot;Сертификаты&quot; или через &quot;КриптоПро CSP&quot;.</p>]]></description>
			<author><![CDATA[null@example.com (Ксения Шаврова)]]></author>
			<pubDate>Fri, 27 Dec 2019 06:33:00 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/13807/#p13807</guid>
		</item>
		<item>
			<title><![CDATA[Re: Java экспорт сертификата с ruToken]]></title>
			<link>https://forum.rutoken.ru/post/13804/#p13804</link>
			<description><![CDATA[<div class="quotebox"><cite>Павел Анфимов пишет:</cite><blockquote><p>MihCools, возможно у вас контейнер КриптоПро?</p><p>Покажите, пожалуйста, скриншот Панели Управления Рутокен на вкладке сертификаты.</p></blockquote></div><p>Здравствуйте, да Крипто-Про GOST R34.10-2001<br />Я так понимаю чтобы извлечь необходим провайдер Крипто-про ?</p>]]></description>
			<author><![CDATA[null@example.com (MihCools)]]></author>
			<pubDate>Thu, 26 Dec 2019 12:04:34 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/13804/#p13804</guid>
		</item>
		<item>
			<title><![CDATA[Re: Java экспорт сертификата с ruToken]]></title>
			<link>https://forum.rutoken.ru/post/13803/#p13803</link>
			<description><![CDATA[<p>MihCools, возможно у вас контейнер КриптоПро?</p><p>Покажите, пожалуйста, скриншот Панели Управления Рутокен на вкладке сертификаты.</p>]]></description>
			<author><![CDATA[null@example.com (Павел Анфимов)]]></author>
			<pubDate>Thu, 26 Dec 2019 08:53:41 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/13803/#p13803</guid>
		</item>
		<item>
			<title><![CDATA[Re: Java экспорт сертификата с ruToken]]></title>
			<link>https://forum.rutoken.ru/post/13800/#p13800</link>
			<description><![CDATA[<p>Может быть есть консольные утилиты которые могут выполнить данную задачу ?</p>]]></description>
			<author><![CDATA[null@example.com (MihCools)]]></author>
			<pubDate>Wed, 25 Dec 2019 19:31:45 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/13800/#p13800</guid>
		</item>
		<item>
			<title><![CDATA[Re: Java экспорт сертификата с ruToken]]></title>
			<link>https://forum.rutoken.ru/post/13799/#p13799</link>
			<description><![CDATA[<div class="quotebox"><cite>Евгений Мироненко пишет:</cite><blockquote><p>Пожалуйста, воспользуйтесь примерами из <a href="https://www.rutoken.ru/support/download/get/sdk.html">Рутокен SDK</a>. Проект примеров для Java доступен по пути java/samples/JavaSamples.iml. Ближе всего к вашей задаче пример ru.rutoken.samples.sunJCA.RSA. Модифицированный до кода ниже, он выполняет вашу задачу.</p><div class="codebox"><pre><code>package ru.rutoken.samples.sunJCA;

import ru.rutoken.samples.Constants;

import javax.crypto.Cipher;
import java.security.*;
import java.security.cert.X509Certificate;
import java.util.Enumeration;

public class RSA {
    public static void main(String[] args) {
        try {
            String config = &quot;cfg/pkcs11.cfg&quot;;
            Provider sunPKCS11 = new sun.security.pkcs11.SunPKCS11(config);
            int pos = Security.addProvider(sunPKCS11);
            System.out.println(&quot;Provider Level: &quot; + pos);

            // Авторизация на токен
            KeyStore ks = KeyStore.getInstance(&quot;PKCS11&quot;, sunPKCS11);
            ks.load(null, new String(Constants.DEFAULT_USER_PIN).toCharArray());

            // Поиск ключевой пары на токене (только если присутствует сертификат)
            Enumeration aliases = ks.aliases();
            String alias = null;
            while (aliases.hasMoreElements()) {
                alias = aliases.nextElement().toString();
                System.out.println(&quot;Alias:\n &quot; + alias);
            }
            if (alias != null) {
                X509Certificate cert = (X509Certificate) ks.getCertificate(alias);
                System.out.println(&quot;Certificate:\n &quot; + cert);
            }
        } catch (Exception e) {
            System.out.println(&quot;Some error occurred. Error code: &quot; + e.getMessage());
        }
    }
}</code></pre></div><p>Если решение не работает, не могли бы уточнить, какими средствами сертификаты были записаны на токен?</p></blockquote></div><br /><p>Немного стыдно признаваться, но так и не понял как этот проект подключить к NetBeans, примерно это я уже пробовал, результат - все тот же.<br />Записывал не я, но у нас на предприятии используют КриптоПро и все что связано с ним.</p>]]></description>
			<author><![CDATA[null@example.com (MihCools)]]></author>
			<pubDate>Wed, 25 Dec 2019 19:28:08 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/13799/#p13799</guid>
		</item>
		<item>
			<title><![CDATA[Re: Java экспорт сертификата с ruToken]]></title>
			<link>https://forum.rutoken.ru/post/13798/#p13798</link>
			<description><![CDATA[<p>Пожалуйста, воспользуйтесь примерами из <a href="https://www.rutoken.ru/support/download/get/sdk.html">Рутокен SDK</a>. Проект примеров для Java доступен по пути java/samples/JavaSamples.iml. Ближе всего к вашей задаче пример ru.rutoken.samples.sunJCA.RSA. Модифицированный до кода ниже, он выполняет вашу задачу.</p><div class="codebox"><pre><code>package ru.rutoken.samples.sunJCA;

import ru.rutoken.samples.Constants;

import javax.crypto.Cipher;
import java.security.*;
import java.security.cert.X509Certificate;
import java.util.Enumeration;

public class RSA {
    public static void main(String[] args) {
        try {
            String config = &quot;cfg/pkcs11.cfg&quot;;
            Provider sunPKCS11 = new sun.security.pkcs11.SunPKCS11(config);
            int pos = Security.addProvider(sunPKCS11);
            System.out.println(&quot;Provider Level: &quot; + pos);

            // Авторизация на токен
            KeyStore ks = KeyStore.getInstance(&quot;PKCS11&quot;, sunPKCS11);
            ks.load(null, new String(Constants.DEFAULT_USER_PIN).toCharArray());

            // Поиск ключевой пары на токене (только если присутствует сертификат)
            Enumeration aliases = ks.aliases();
            String alias = null;
            while (aliases.hasMoreElements()) {
                alias = aliases.nextElement().toString();
                System.out.println(&quot;Alias:\n &quot; + alias);
            }
            if (alias != null) {
                X509Certificate cert = (X509Certificate) ks.getCertificate(alias);
                System.out.println(&quot;Certificate:\n &quot; + cert);
            }
        } catch (Exception e) {
            System.out.println(&quot;Some error occurred. Error code: &quot; + e.getMessage());
        }
    }
}</code></pre></div><p>Если решение не работает, не могли бы уточнить, какими средствами сертификаты были записаны на токен?</p>]]></description>
			<author><![CDATA[null@example.com (Евгений Мироненко)]]></author>
			<pubDate>Wed, 25 Dec 2019 19:18:05 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/13798/#p13798</guid>
		</item>
		<item>
			<title><![CDATA[Re: Java экспорт сертификата с ruToken]]></title>
			<link>https://forum.rutoken.ru/post/13797/#p13797</link>
			<description><![CDATA[<div class="quotebox"><cite>Евгений Мироненко пишет:</cite><blockquote><p>Здравствуйте.<br />Строка в вашем коде делает неведомое:<br /></p><div class="codebox"><pre><code>System.out.println(keyStore.getCertificate(keyStore.aliases().toString()));</code></pre></div><p>keyStore.aliases().toString() имеет значение &quot;java.util.Collections$3@3b95a09c&quot;. По коллекции надо итерироваться и доставать значения алиасов. Из keyStore сертификаты берутся по отдельным значениям алиасов.</p><p>Попробуйте так:</p><div class="codebox"><pre><code>ByteArrayInputStream configStream = new ByteArrayInputStream(pkcs11Config.getBytes());
Provider pkcs11Provider = new SunPKCS11(configStream);
Security.addProvider(pkcs11Provider);
Set&lt;Provider.Service&gt; services = pkcs11Provider.getServices();
System.out.println(services);
KeyStore keyStore =KeyStore.getInstance(&quot;PKCS11&quot;, pkcs11Provider);
keyStore.load(null, password);
System.out.println(keyStore.aliases()+ &quot;   ali&quot;);

for (Enumeration&lt;String&gt; aliases = keyStore.aliases(); aliases.hasMoreElements();) {
    String alias = aliases.nextElement();
    X509Certificate cert = (X509Certificate) keyStore.getCertificate(alias);
    if (cert) {
        System.out.println(cert.toString());
    } else {
        System.out.println(&quot;Cert is null&quot;);
    }
}</code></pre></div></blockquote></div><p>Спасибо большое что откликнулись ! Я уже с ума схожу не зная что делать, поэтому могу и чушь написать,&nbsp; &nbsp;if (cert) java назвала неправильной, оставил System.out.println(cert.toString()+&quot; cert&quot;); - но эту строку вообще не выводит, но после нее код выполняется ...</p><p>Немного разобрался, как я понял - цикл вообще не запускается ....</p>]]></description>
			<author><![CDATA[null@example.com (MihCools)]]></author>
			<pubDate>Wed, 25 Dec 2019 18:51:09 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/13797/#p13797</guid>
		</item>
		<item>
			<title><![CDATA[Re: Java экспорт сертификата с ruToken]]></title>
			<link>https://forum.rutoken.ru/post/13796/#p13796</link>
			<description><![CDATA[<p>Здравствуйте.<br />Строка в вашем коде делает неведомое:<br /></p><div class="codebox"><pre><code>System.out.println(keyStore.getCertificate(keyStore.aliases().toString()));</code></pre></div><p>keyStore.aliases().toString() имеет значение &quot;java.util.Collections$3@3b95a09c&quot;. По коллекции надо итерироваться и доставать значения алиасов. Из keyStore сертификаты берутся по отдельным значениям алиасов.</p><p>Попробуйте так:</p><div class="codebox"><pre><code>ByteArrayInputStream configStream = new ByteArrayInputStream(pkcs11Config.getBytes());
Provider pkcs11Provider = new SunPKCS11(configStream);
Security.addProvider(pkcs11Provider);
Set&lt;Provider.Service&gt; services = pkcs11Provider.getServices();
System.out.println(services);
KeyStore keyStore =KeyStore.getInstance(&quot;PKCS11&quot;, pkcs11Provider);
keyStore.load(null, password);
System.out.println(keyStore.aliases()+ &quot;   ali&quot;);

for (Enumeration&lt;String&gt; aliases = keyStore.aliases(); aliases.hasMoreElements();) {
    String alias = aliases.nextElement();
    X509Certificate cert = (X509Certificate) keyStore.getCertificate(alias);
    if (cert) {
        System.out.println(cert.toString());
    } else {
        System.out.println(&quot;Cert is null&quot;);
    }
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Евгений Мироненко)]]></author>
			<pubDate>Wed, 25 Dec 2019 18:31:36 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/13796/#p13796</guid>
		</item>
		<item>
			<title><![CDATA[Java экспорт сертификата с ruToken]]></title>
			<link>https://forum.rutoken.ru/post/13795/#p13795</link>
			<description><![CDATA[<p>Здравствуйте, далеко не специалист в данной теме, но нужно реализовать экспорт сертификата, почему нет вывода ?<br />Сделал следующее исходя из инструкций которые нашел:</p><div class="codebox"><pre><code>ByteArrayInputStream configStream = new ByteArrayInputStream(pkcs11Config.getBytes());
Provider pkcs11Provider = new SunPKCS11(configStream);
Security.addProvider(pkcs11Provider);
Set&lt;Provider.Service&gt; services = pkcs11Provider.getServices();
System.out.println(services);
KeyStore keyStore =KeyStore.getInstance(&quot;PKCS11&quot;, pkcs11Provider);
keyStore.load(null, password);
System.out.println(keyStore.aliases()+ &quot;   ali&quot;);
System.out.println(keyStore.getCertificate(keyStore.aliases().toString()));</code></pre></div><p>Конфигурация провайдера взята из SDK</p><p>Вывод (за исключением информации о устройстве):<br />/n[SunPKCS11-provider: MessageDigest.SHA-512 -&gt; sun.security.pkcs11.P11Digest<br />&nbsp; aliases: [2.16.840.1.101.3.4.2.3, OID.2.16.840.1.101.3.4.2.3]<br /> (CKM_SHA512), SunPKCS11-provider: Cipher.ARCFOUR -&gt; sun.security.pkcs11.P11Cipher<br />&nbsp; aliases: [RC4]<br /> (CKM_RC4), SunPKCS11-provider: Cipher.DES/ECB/NoPadding -&gt; sun.security.pkcs11.P11Cipher<br /> (CKM_DES_ECB), SunPKCS11-provider: Signature.MD2withRSA -&gt; sun.security.pkcs11.P11Signature<br />&nbsp; aliases: [1.2.840.113549.1.1.2, OID.1.2.840.113549.1.1.2]<br /> (CKM_RSA_PKCS), SunPKCS11-provider: Cipher.DES/CBC/NoPadding -&gt; sun.security.pkcs11.P11Cipher<br /> (CKM_DES_CBC), SunPKCS11-provider: KeyPairGenerator.RSA -&gt; sun.security.pkcs11.P11KeyPairGenerator<br /> (CKM_RSA_PKCS_KEY_PAIR_GEN), SunPKCS11-provider: Signature.SHA256withRSA -&gt; sun.security.pkcs11.P11Signature<br />&nbsp; aliases: [1.2.840.113549.1.1.11, OID.1.2.840.113549.1.1.11]<br /> (CKM_SHA256_RSA_PKCS), SunPKCS11-provider: Cipher.DES/ECB/PKCS5Padding -&gt; sun.security.pkcs11.P11Cipher<br />&nbsp; aliases: [DES]<br /> (CKM_DES_ECB), SunPKCS11-provider: SecretKeyFactory.DESede -&gt; sun.security.pkcs11.P11SecretKeyFactory<br /> (CKM_DES3_CBC), SunPKCS11-provider: SecretKeyFactory.DES -&gt; sun.security.pkcs11.P11SecretKeyFactory<br /> (CKM_DES_CBC), SunPKCS11-provider: Signature.SHA1withRSA -&gt; sun.security.pkcs11.P11Signature<br />&nbsp; aliases: [1.2.840.113549.1.1.5, OID.1.2.840.113549.1.1.5, 1.3.14.3.2.29]<br /> (CKM_SHA1_RSA_PKCS), SunPKCS11-provider: SecretKeyFactory.ARCFOUR -&gt; sun.security.pkcs11.P11SecretKeyFactory<br />&nbsp; aliases: [RC4]<br /> (CKM_RC4), SunPKCS11-provider: Signature.MD5withRSA -&gt; sun.security.pkcs11.P11Signature<br />&nbsp; aliases: [1.2.840.113549.1.1.4, OID.1.2.840.113549.1.1.4]<br /> (CKM_MD5_RSA_PKCS), SunPKCS11-provider: KeyGenerator.ARCFOUR -&gt; sun.security.pkcs11.P11KeyGenerator<br />&nbsp; aliases: [RC4]<br /> (CKM_RC4_KEY_GEN), SunPKCS11-provider: Cipher.RSA/ECB/PKCS1Padding -&gt; sun.security.pkcs11.P11RSACipher<br />&nbsp; aliases: [RSA]<br /> (CKM_RSA_PKCS), SunPKCS11-provider: MessageDigest.MD5 -&gt; sun.security.pkcs11.P11Digest<br /> (CKM_MD5), SunPKCS11-provider: MessageDigest.SHA1 -&gt; sun.security.pkcs11.P11Digest<br />&nbsp; aliases: [SHA, SHA-1, 1.3.14.3.2.26, OID.1.3.14.3.2.26]<br /> (CKM_SHA_1), SunPKCS11-provider: KeyFactory.RSA -&gt; sun.security.pkcs11.P11RSAKeyFactory<br /> (CKM_RSA_PKCS_KEY_PAIR_GEN), SunPKCS11-provider: Signature.SHA224withRSA -&gt; sun.security.pkcs11.P11Signature<br />&nbsp; aliases: [1.2.840.113549.1.1.14, OID.1.2.840.113549.1.1.14]<br /> (CKM_RSA_PKCS), SunPKCS11-provider: Signature.SHA384withRSA -&gt; sun.security.pkcs11.P11Signature<br />&nbsp; aliases: [1.2.840.113549.1.1.12, OID.1.2.840.113549.1.1.12]<br /> (CKM_SHA384_RSA_PKCS), SunPKCS11-provider: Signature.SHA512withRSA -&gt; sun.security.pkcs11.P11Signature<br />&nbsp; aliases: [1.2.840.113549.1.1.13, OID.1.2.840.113549.1.1.13]<br /> (CKM_SHA512_RSA_PKCS), SunPKCS11-provider: Cipher.DESede/CBC/PKCS5Padding -&gt; sun.security.pkcs11.P11Cipher<br /> (CKM_DES3_CBC_PAD), SunPKCS11-provider: KeyGenerator.DESede -&gt; sun.security.pkcs11.P11KeyGenerator<br /> (CKM_DES3_KEY_GEN), SunPKCS11-provider: KeyGenerator.DES -&gt; sun.security.pkcs11.P11KeyGenerator<br /> (CKM_DES_KEY_GEN), SunPKCS11-provider: Cipher.DESede/ECB/NoPadding -&gt; sun.security.pkcs11.P11Cipher<br /> (CKM_DES3_ECB), SunPKCS11-provider: MessageDigest.SHA-384 -&gt; sun.security.pkcs11.P11Digest<br />&nbsp; aliases: [2.16.840.1.101.3.4.2.2, OID.2.16.840.1.101.3.4.2.2]<br /> (CKM_SHA384), SunPKCS11-provider: Cipher.DESede/ECB/PKCS5Padding -&gt; sun.security.pkcs11.P11Cipher<br />&nbsp; aliases: [DESede]<br /> (CKM_DES3_ECB), SunPKCS11-provider: Cipher.DES/CBC/PKCS5Padding -&gt; sun.security.pkcs11.P11Cipher<br /> (CKM_DES_CBC_PAD), SunPKCS11-provider: Cipher.DESede/CBC/NoPadding -&gt; sun.security.pkcs11.P11Cipher<br /> (CKM_DES3_CBC), SunPKCS11-provider: Mac.HmacSHA1 -&gt; sun.security.pkcs11.P11MAC<br />&nbsp; aliases: [1.2.840.113549.2.7, OID.1.2.840.113549.2.7]<br /> (CKM_SHA_1_HMAC), SunPKCS11-provider: Cipher.RSA/ECB/NoPadding -&gt; sun.security.pkcs11.P11RSACipher<br /> (CKM_RSA_X_509), SunPKCS11-provider: Mac.HmacMD5 -&gt; sun.security.pkcs11.P11MAC<br /> (CKM_MD5_HMAC), SunPKCS11-provider: MessageDigest.SHA-256 -&gt; sun.security.pkcs11.P11Digest<br />&nbsp; aliases: [2.16.840.1.101.3.4.2.1, OID.2.16.840.1.101.3.4.2.1]<br /> (CKM_SHA256), SunPKCS11-provider: SecureRandom.PKCS11 -&gt; sun.security.pkcs11.P11SecureRandom<br /> (SecureRandom), SunPKCS11-provider: KeyStore.PKCS11 -&gt; sun.security.pkcs11.P11KeyStore<br />&nbsp; aliases: [PKCS11-provider]<br /> (KeyStore)]/n<br />java.util.Collections$3@3b95a09cali<br />null</p>]]></description>
			<author><![CDATA[null@example.com (MihCools)]]></author>
			<pubDate>Wed, 25 Dec 2019 12:14:13 +0000</pubDate>
			<guid>https://forum.rutoken.ru/post/13795/#p13795</guid>
		</item>
	</channel>
</rss>
