JaCarta/PKI: различия между версиями
(Окончательная редакция) |
Bk (обсуждение | вклад) (Указывать конкретную версию библиотеки сейчас уже не актуально.) |
||
(не показано 16 промежуточных версий 4 участников) | |||
Строка 1: | Строка 1: | ||
* Токен: JaCarta PKI (определено программой [http://www.aladdin-rd.ru/support/downloads/39103/ JaCarta Info]) | * Токен: JaCarta PKI (определено программой [http://www.aladdin-rd.ru/support/downloads/39103/ JaCarta Info]) | ||
== | = Значения PIN-кодов по умолчанию = | ||
PIN-код пользователя по умолчанию (PIN): '''11111111''' | |||
3. Для | PIN-код администратора по умолчанию (SO-PIN): '''00000000''' | ||
=Утилита pkcs11-tool= | |||
Должны быть установлены пакеты: | |||
<source lang="text" highlight="1"># apt-get install opensc</source> | |||
В состав opensc входит универсальная утилита pkcs11-tool, которой можно «подложить», например, библиотеку PKCS#11 для работы с JaСarta и с ее помощью «управлять» токенами JaCarta. | |||
== Пакеты для работы с JaCarta PKI== | |||
Установить библиотеку libjcPKCS11: | |||
<source lang="text" highlight="1"># apt-get install libjcpkcs11</source> | |||
{{Note|При работе с JaCarta PKI необходимо указывать путь до библиотеки libjcPKCS11-2.so: | |||
<source lang="text" highlight="1">--module /usr/lib64/pkcs11/libjcPKCS11-2.so.2.4.0</source>}} | |||
{{Note|? можно использовать библиотеку libjcpkcs11-2.so (версия 2.1.3) из пакета libjcpkcs11: | |||
<source lang="text" highlight="1">--module /usr/lib64/pkcs11/libjcpkcs11-2.so</source> | |||
("2.4 - актуальная для всех наших устройств. 2.1 имеет ряд недостатков и багов, которые в 2.4 исправили")}} | |||
==Проверка работы JaCartaPKI== | |||
Проверяем работу токена, он должен быть виден в списке: | |||
<source lang="text" highlight="1">$ pkcs11-tool -L --module /usr/lib64/pkcs11/libjcPKCS11-2.so | |||
Available slots: | |||
Slot 0 (0x1ffff): Aladdin R.D. JaCarta [SCR Interface] (000000000000) 00 00 | |||
token label : JaCarta#4E46001119145046 | |||
token manufacturer : Aladdin R.D. | |||
token model : JaCarta Laser | |||
token flags : login required, token initialized, PIN initialized, readonly | |||
hardware version : 1.1 | |||
firmware version : 1.0 | |||
serial num : 4E46001119145046 | |||
pin min/max : 4/10 | |||
</source> | |||
Просмотреть имеющуюся на токене информацию можно при помощи команды (требуется пароль от токена): | |||
<source lang="text" highlight="1">$ pkcs11-tool -Ol --module /usr/lib64/pkcs11/libjcPKCS11-2.so | |||
Using slot 0 with a present token (0x1ffff) | |||
Logging in to "JaCarta#4E43002311275331". | |||
Please enter User PIN: </source> | |||
Список объектов в определенном слоте: | |||
<source lang="text" highlight="1">$ pkcs11-tool -Ol --slot-index 0 --module /usr/lib64/pkcs11/libjcPKCS11-2.so</source> | |||
==Инициализация (форматирование) токена== | |||
{{Attention|При инициализации вся информация с ключа будет удалена и необходимо будет заново записывать сертификат (ключ, электронную подпись)!}} | |||
Для инициализации токена следует выполнить команду (необходимо ввести so-pin карты 2 раза или передать его в качестве параметра --so-pin): | |||
<source lang="text" highlight="1">$ pkcs11-tool --init-token --label JacartaPKI --module /usr/lib64/pkcs11/libjcPKCS11-2.so | |||
Using slot 0 with a present token (0x1) | |||
Please enter the new SO PIN: | |||
Please enter the new SO PIN (again): | |||
Token successfully initialized | |||
</source> | |||
{{Note|Если используется комбинированная модель JaCarta-2 PKI/ГОСТ, необходимо в командах указывать --slot-index, т.к. по умолчанию используется слот с индексом 0}} | |||
После форматирования ключа необходимо проинициализировать PIN пользователя, в выводе команды, в строке token flags, должен присутствовать флаг PIN initialized: | |||
<source lang="text" highlight="1">$ pkcs11-tool -L --module /usr/lib64/pkcs11/libjcPKCS11-2.so | |||
Available slots: | |||
Slot 1 (0x2ffff): ACS ACR38U-CCID 00 00 | |||
token label : JacartaPKI | |||
token manufacturer : Aladdin R.D. | |||
token model : JaCarta Laser | |||
token flags : login required, token initialized, readonly | |||
hardware version : 1.0 | |||
firmware version : 1.0 | |||
serial num : 4E43002303465331 | |||
pin min/max : 4/10 | |||
</source> | |||
==Иинициализация PIN-кода== | |||
Для инициализации PIN-кода необходимо выполнить команду (потребуется ввести so-pin карты, а затем дважды ввести новый PIN-код): | |||
<source lang="text" highlight="1">$ pkcs11-tool --init-pin -l --module /usr/lib64/pkcs11/libjcPKCS11-2.so | |||
Using slot 0 with a present token (0x1) | |||
Logging in to "JacartaPKI". | |||
Please enter SO PIN: | |||
Please enter the new PIN: | |||
Please enter the new PIN again: | |||
User PIN successfully initialized | |||
</source> | |||
==Смена PIN-кода== | |||
Для смены PIN-кода необходимо выполнить команду (потребуется ввести текущий PIN-код, а затем дважды ввести новый): | |||
<source lang="text" highlight="1">$ pkcs11-tool --change-pin --module /usr/lib64/pkcs11/libjcPKCS11-2.so | |||
Using slot 0 with a present token (0x1) | |||
Please enter the current PIN: | |||
Please enter the new PIN: | |||
Please enter the new PIN again: | |||
PIN successfully changed | |||
</source> | |||
==Удаление объекта== | |||
Для удаления объекта необходимо указать его тип и идентификатор (id) или название (label). Открытый и закрытый ключ удаляются отдельно. | |||
<source lang="text" highlight="1">$ pkcs11-tool -b -y privkey --login --id 1024 --module /usr/lib64/pkcs11/libjcPKCS11-2.so</source> | |||
Типы объектов: | |||
*privkey – закрытый ключ; | |||
*pubkey – открытый ключ; | |||
*cert – сертификат. | |||
==Создание ключевой пары== | |||
Генерация пары ключей: | |||
<source lang="text" highlight="1">$ pkcs11-tool --module /usr/lib64/pkcs11/libjcPKCS11-2.so --keypairgen --key-type rsa:1024 --login --id 2222 --label myrsakey | |||
Using slot 0 with a present token (0x1ffff) | |||
Logging in to "JaCarta#4E46001119145046". | |||
Please enter User PIN: | |||
Key pair generated: | |||
Private Key Object; RSA | |||
label: myrsakey | |||
ID: 2222 | |||
Usage: decrypt, sign, unwrap | |||
warning: PKCS11 function C_GetAttributeValue(ALWAYS_AUTHENTICATE) failed: rv = CKR_ATTRIBUTE_TYPE_INVALID (0x12) | |||
Public Key Object; RSA 1024 bits | |||
label: myrsakey | |||
ID: 2222 | |||
Usage: encrypt, verify, wrap | |||
</source> | |||
==Сертификаты== | |||
===Получение сертификата=== | |||
Запрос на сертификат необходимо подписать в аккредитованном удостоверяющем центре. | |||
===Запись сертификата=== | |||
Запись сертификата на токен: | |||
<source lang="text" highlight="1">$ pkcs11-tool --module /usr/lib64/pkcs11/libjcPKCS11-2.so --pin 11111111 --write-object ./cert.der --type cert --id 0101 | |||
Using slot 0 with a present token (0x1ffff) | |||
Created certificate: | |||
Certificate Object; type = X.509 cert | |||
label: | |||
subject: DN: CN=\xd0\x98\xd0\xb2\xd0\xb0\xd0\xbd\xd0\xbe\xd0\xb2 \xd0\x98\xd0\xb2\xd0\xb0\xd0\xbd \xd0\x98\xd0\xb2\xd0\xb0\xd0\xbd\xd0\xbe\xd0\xb2\xd0\xb8\xd1\x87, C=RU, L=\xD0\xB3. \xD0\x9A\xD0\xB0\xD0\xBB\xD0\xB8\xD0\xBD\xD0\xB8\xD0\xBD\xD0\xB3\xD1\x80\xD0\xB0\xD0\xB4/street=\xd0\x9f\xd1\x80-\xd1\x82 \xd0\x9f\xd0\xbe\xd0\xb1\xd0\xb5\xd0\xb4\xd1\x8b 14 \xD0\xBA\xD0\xB2. 3, emailAddress=ivanov@mail.mail | |||
ID: 0101 | |||
</source> | |||
===Чтение сертификата=== | |||
Если на карте имеется сертификат, его можно прочитать командой: | |||
<source lang="text" highlight="1">$ pkcs11-tool --read-object --type cert --login --id 0101 --module /usr/lib64/pkcs11/libjcPKCS11-2.so | |||
</source> | |||
ID сертификата можно посмотреть, выведя список объектов на токене: | |||
<source lang="text" highlight="1">$ pkcs11-tool --module /usr/lib64/pkcs11/libjcPKCS11-2.so -O | |||
</source> | |||
= КриптоПро = | |||
Подробнее о КриптоПро: [[КриптоПро]] | |||
{{note|Проверена работоспособность на всех доступных для скачивания с сайта КриптоПро версиях: | |||
* '''КриптоПро CSP 5.0 R3 - 5.0.12500 - OK''' | |||
* '''КриптоПро CSP 5.0 R2 - 5.0.12000 - OK''' | |||
* '''КриптоПро CSP 4.0 R4 - OK''' | |||
* '''КриптоПро CSP 3.9 R2 - 3.9.8495 - OK''' | |||
* '''КриптоПро CSP 4.0 R2 - 4.0.9842 - OK''' | |||
* КриптоПро CSP 3.6 R4 - 3.6.7777 - не работает}} | |||
== Установка КриптоПро == | |||
1. Установите метапакет {{pkg|cryptopro-preinstall-full}} для установки всех необходимых зависимостей: | |||
# apt-get install cryptopro-preinstall-full | # apt-get install cryptopro-preinstall-full | ||
2. Скачайте архив с RPM-пакетами с оф.сайта КриптоПро - [https://www.cryptopro.ru/sites/default/files/private/csp/39/8495/linux-amd64.tgz linux-amd64.tgz] | |||
3. Выполните под рутом из папки с распакованным архивом следующие команды: | |||
<pre> | <pre> | ||
sh install.sh | # sh install.sh | ||
apt-get install cprocsp-curl* lsb-cprocsp-base* lsb-cprocsp-capilite* lsb-cprocsp-kc1* cprocsp-rdr-jacarta* \ | # apt-get install cprocsp-curl* lsb-cprocsp-base* lsb-cprocsp-capilite* lsb-cprocsp-kc1* cprocsp-rdr-jacarta* \ | ||
cprocsp-rdr-gui-gtk* cprocsp-rdr-rutoken* cprocsp-rdr-pcsc* lsb-cprocsp-pkcs11* lsb-cprocsp-rdr-64* | |||
</pre> | </pre> | ||
{{Note|Для 32-битной версии вместо последнего пакета — lsb-cprocsp-rdr-4*}} | |||
{{Attention|Для '''КриптоПро CSP 3.9''': | |||
1. Скачайте МП с сайта Аладдина: http://www.aladdin-rd.ru/support/downloads/29369/ | |||
3. | 2. Установите RPM-пакет из архива: | ||
# apt-get install cprocsp-rdr-jacarta-3.6.1-3.6.404-1.x86_64.rpm | |||
<source lang="text" highlight=1 | 3. Желательно перезагрузить компьютер. }} | ||
$ csptest -enum -info -type PP_ENUMREADERS | iconv -f cp1251 | |||
CSP (Type: | ==Управление считывателями== | ||
CryptAcquireContext succeeded.HCRYPTPROV: | |||
Просмотр доступных считывателей: | |||
<source lang="text" highlight="1">$ csptest -enum -info -type PP_ENUMREADERS | iconv -f cp1251 | |||
CSP (Type:80) v5.0.10001 KC1 Release Ver:5.0.11319 OS:Linux CPU:AMD64 FastCode:READY:AVX. | |||
CryptAcquireContext succeeded.HCRYPTPROV: 32655395 | |||
GetProvParam(...PP_ENUMREADERS...) until it returns false | GetProvParam(...PP_ENUMREADERS...) until it returns false | ||
Len Byte NickName/Name | Len Byte NickName/Name | ||
_____________________________ | _____________________________ | ||
0x012a | 0x012a 0x03 Aladdin R.D. JaCarta [SCR Interface] (000000000000) 00 00 | ||
Aladdin R.D. JaCarta [SCR Interface] (000000000000) 00 00 | |||
0x012a | 0x012a 0x01 FLASH | ||
FLASH | FLASH | ||
0x012a | 0x012a 0x00 HDIMAGE | ||
HDD key storage | |||
Cycle exit when getting data. 3 items found. Level completed without problems. | Cycle exit when getting data. 3 items found. Level completed without problems. | ||
Total: SYS: 0, | Total: SYS: 0,030 sec USR: 0,030 sec UTC: 0,070 sec | ||
[ErrorCode: 0x00000000]</source> | |||
Инициализация считывателя HDIMAGE (под правами root): | |||
<source lang="text" highlight="1"># /opt/cprocsp/sbin/amd64/cpconfig -hardware reader -add 'Aladdin R.D. JaCarta [SCR Interface] (000000000000) 00 00' -name 'Jacarta' | |||
Adding new reader: | |||
Nick name: Aladdin R.D. JaCarta [SCR Interface] (000000000000) 00 00 | |||
Name device: Jacarta | |||
Succeeded, code:0x0</source> | |||
Создание контейнера на токене/смарт-карте: | |||
<source lang="text" highlight="1">$ csptest -keyset -provtype 80 -newkeyset -cont '\\.\Aladdin R.D. JaCarta [SCR Interface] (000000000000) 00 00\Jacarta' | |||
CSP (Type:80) v5.0.10001 KC1 Release Ver:5.0.11319 OS:Linux CPU:AMD64 FastCode:READY:AVX. | |||
AcquireContext: OK. HCRYPTPROV: 21797187 | |||
GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2012 KC1 CSP | |||
Container name: "Jacarta" | |||
Signature key is not available. | |||
Attempting to create a signature key... | |||
a signature key created. | |||
Exchange key is not available. | |||
Attempting to create an exchange key... | |||
an exchange key created. | |||
Keys in container: | |||
signature key | |||
exchange key | |||
Extensions: | |||
OID: 1.2.643.2.2.37.3.9 | |||
PrivKey: Not specified - 27.05.2020 18:54:04 (UTC) | |||
OID: 1.2.643.2.2.37.3.10 | |||
PrivKey: Not specified - 27.05.2020 18:54:35 (UTC) | |||
Total: SYS: 0,210 sec USR: 0,200 sec UTC: 45,550 sec | |||
[ErrorCode: 0x00000000]</source> | |||
При установленном пакете cprocsp-rdr-gui-gtk будет показано графическое окно, где будет предложено перемещать указатель мыши или нажимать клавиши: | |||
При установленном пакете {{pkg|cprocsp-rdr-gui-gtk}} будет показано графическое окно, где будет предложено перемещать указатель мыши или нажимать клавиши: | |||
[[Изображение:Cryptopro-newkeyset-ru.png|Генерация случайной последовательности]] | |||
{{note|Если такой пакет не установлен, будет предложено ввести любые символы с клавиатуры.}} | |||
После этого необходимо предъявить PIN-код пользователя: | |||
[[Изображение:Cryptopro-newkeyset-pin.png|Запрос пин-кода для аутентификации на носителе]] | |||
После указания PIN-кода снова будет предложено перемещать указатель мыши. | |||
{{note|В КриптоПРо 5, если используется комбинированная модель JaCarta-2 PKI/ГОСТ, можно будет выбрать выбрать способ создания контейнера. | |||
Создание неизвлекаемого контейнера: | |||
[[Файл:Jacarta_newcont.png|Выбор носителя для создания контейнера]] | |||
В этом случае будет использована встроенная криптография носителя. В этом случае см. [[JaCarta/ГОСТ]] | |||
Создание обычного контейнера: | |||
[[Файл:Jacarta_newcont2.png|Выбор носителя для создания контейнера]] | |||
}} | |||
Проверить наличие контейнеров можно с помощью команды: | |||
<source lang="text" highlight="1">$ csptest -keyset -enum_cont -fqcn -verifyc | iconv -f cp1251 | |||
CSP (Type:80) v5.0.10001 KC1 Release Ver:5.0.11319 OS:Linux CPU:AMD64 FastCode:READY:AVX. | |||
AcquireContext: OK. HCRYPTPROV: 16152611 | |||
\\.\Aladdin R.D. JaCarta [SCR Interface] (000000000000) 00 00\Jacarta | |||
OK. | |||
Total: SYS: 0,090 sec USR: 0,040 sec UTC: 4,470 sec | |||
[ErrorCode: 0x00000000]</source> | |||
Просмотр подробной информации о контейнере: | |||
<source lang="text" highlight="1">$ csptestf -keyset -container '\\.\Aladdin R.D. JaCarta [SCR Interface] (000000000000) 00 00\Jacarta' -info</source> | |||
Удалить контейнер можно с помощью команды: | |||
<source lang="text" highlight="1">$ csptestf -keyset -deletekeyset -cont '\\.\Aladdin R.D. JaCarta [SCR Interface] (000000000000) 00 00\Jacarta'</source> | |||
== Управление сертификатами == | |||
=== Создание запроса на получение сертификата === | |||
Создание запроса на получение сертификата средствами КриптоПро: | |||
<source lang="text" highlight="1">$ cryptcp -creatrqst -dn "список имён полей" -cont 'путь к контейнеру' <название_файла>.csr</source> | |||
Например: | |||
<source lang="text" highlight="1-5"> | |||
cryptcp -creatrqst \ | |||
-dn "E=ivanov@mail.mail,CN=Иванов Иван Иванович,SN=Иванов,G=Иван Иванович,C=RU,L=Калининград,ST=39 Калининградская обл.,street=Пр-т Победы 14 кв.3" \ | |||
-provtype 80 -nokeygen \ | |||
-cont '\\.\Aladdin R.D. JaCarta [SCR Interface] (000000000000) 00 00\Jacarta' \ | |||
-certusage "1.3.6.1.5.5.7.3.4,1.3.6.1.5.5.7.3.2" jacarta.req | |||
CryptCP 5.0 (c) "КРИПТО-ПРО", 2002-2018. | |||
Утилита командной строки для подписи и шифрования файлов. | |||
Запрос успешно создан и сохранен в файле. | |||
[ErrorCode: 0x00000000] | [ErrorCode: 0x00000000] | ||
$ | </source> | ||
Запрос на сертификат необходимо подписать в аккредитованном удостоверяющем центре. | |||
\\.\Aladdin R.D. JaCarta [SCR Interface] (000000000000) 00 00\ | |||
Запись сертификата клиента в контейнер: | |||
<source lang="text" highlight="1">$ certmgr -inst -file jacarta.cer -store uMy -cont '\\.\Aladdin R.D. JaCarta [SCR Interface] (000000000000) 00 00\Jacarta' -inst_to_cont | |||
Installing: | |||
============================================================================= | |||
1------- | |||
Issuer : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2 | |||
Subject : E=ivanov@mail.mail | |||
Serial : 0x120032E7B852F4CC6681F6887500000032E7B8 | |||
SHA1 Hash : 33ba9e77ead5e56c01c71c32e53241b8904f8688 | |||
SubjKeyID : 860b17ff1114be40161396a5d536ce3dd19bb2f7 | |||
Signature Algorithm : ГОСТ Р 34.11/34.10-2001 | |||
PublicKey Algorithm : ГОСТ Р 34.10-2012 (512 bits) | |||
Not valid before : 27/02/2019 18:56:15 UTC | |||
Not valid after : 27/05/2019 19:06:15 UTC | |||
PrivateKey Link : No | |||
CA cert URL : http://testca.cryptopro.ru/CertEnroll/test-ca-2014_CRYPTO-PRO%20Test%20Center%202.crt | |||
OCSP URL : http://testca.cryptopro.ru/ocsp/ocsp.srf | |||
CDP : http://testca.cryptopro.ru/CertEnroll/CRYPTO-PRO%20Test%20Center%202.crl | |||
Extended Key Usage : 1.3.6.1.5.5.7.3.4 | |||
1.3.6.1.5.5.7.3.2 | |||
============================================================================= | |||
</source> | |||
Запись сертификата УЦ: | |||
<source lang="text" highlight="1"># /opt/cprocsp/bin/amd64/certmgr -inst -file cc.cer -store uRoot | |||
Installing: | |||
============================================================================= | |||
1------- | |||
Issuer : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2 | |||
Subject : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2 | |||
Serial : 0x2B6E3351FD6EB2AD48200203CB5BA141 | |||
SHA1 Hash : 046255290b0eb1cdd1797d9ab8c81f699e3687f3 | |||
SubjKeyID : 15317cb08d1ade66d7159c4952971724b9017a83 | |||
Signature Algorithm : ГОСТ Р 34.11/34.10-2001 | |||
PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits) | |||
Not valid before : 05/08/2014 13:44:24 UTC | |||
Not valid after : 05/08/2019 13:54:03 UTC | |||
PrivateKey Link : No | |||
============================================================================= | |||
[ErrorCode: 0x00000000] | [ErrorCode: 0x00000000] | ||
</source> | </source> | ||
== ПО JaCarta (Athena IDProtect) == | |||
=== Установка ПО JaCarta === | |||
#Скачать пакет с ПО и драйверами с официального сайта aladdin-rd.ru — http://www.aladdin-rd.ru/support/downloads/39875/ | |||
#Распаковать архив и установить из него два пакета {{pkg|idprotectclient}} и {{pkg|idprotectclientlib}} (x86_64): | |||
#:apt-get install idprotectclient*.x86_64.rpm | |||
#Из меню доступны программы (пункт «Athena IDProtect Client»): | |||
* IDProtect Manager — просмотр информации о токене, импорт/экспорт сертификатов: | |||
*: [[Файл:IDP_manager.png|IDProtect Manager]] | |||
* IDProtec PINTool — смена ПИН-кодов: | |||
*: [[Файл:IDP_pintool.png|IDProtect PINTool]] | |||
[[Категория:HOWTO]] | [[Категория:HOWTO]] | ||
[[Категория:Криптография]] | [[Категория:Криптография]] |
Текущая версия от 12:44, 22 ноября 2022
- Токен: JaCarta PKI (определено программой JaCarta Info)
Значения PIN-кодов по умолчанию
PIN-код пользователя по умолчанию (PIN): 11111111
PIN-код администратора по умолчанию (SO-PIN): 00000000
Утилита pkcs11-tool
Должны быть установлены пакеты:
# apt-get install opensc
В состав opensc входит универсальная утилита pkcs11-tool, которой можно «подложить», например, библиотеку PKCS#11 для работы с JaСarta и с ее помощью «управлять» токенами JaCarta.
Пакеты для работы с JaCarta PKI
Установить библиотеку libjcPKCS11:
# apt-get install libjcpkcs11
--module /usr/lib64/pkcs11/libjcPKCS11-2.so.2.4.0
--module /usr/lib64/pkcs11/libjcpkcs11-2.so
Проверка работы JaCartaPKI
Проверяем работу токена, он должен быть виден в списке:
$ pkcs11-tool -L --module /usr/lib64/pkcs11/libjcPKCS11-2.so
Available slots:
Slot 0 (0x1ffff): Aladdin R.D. JaCarta [SCR Interface] (000000000000) 00 00
token label : JaCarta#4E46001119145046
token manufacturer : Aladdin R.D.
token model : JaCarta Laser
token flags : login required, token initialized, PIN initialized, readonly
hardware version : 1.1
firmware version : 1.0
serial num : 4E46001119145046
pin min/max : 4/10
Просмотреть имеющуюся на токене информацию можно при помощи команды (требуется пароль от токена):
$ pkcs11-tool -Ol --module /usr/lib64/pkcs11/libjcPKCS11-2.so
Using slot 0 with a present token (0x1ffff)
Logging in to "JaCarta#4E43002311275331".
Please enter User PIN:
Список объектов в определенном слоте:
$ pkcs11-tool -Ol --slot-index 0 --module /usr/lib64/pkcs11/libjcPKCS11-2.so
Инициализация (форматирование) токена
Для инициализации токена следует выполнить команду (необходимо ввести so-pin карты 2 раза или передать его в качестве параметра --so-pin):
$ pkcs11-tool --init-token --label JacartaPKI --module /usr/lib64/pkcs11/libjcPKCS11-2.so
Using slot 0 with a present token (0x1)
Please enter the new SO PIN:
Please enter the new SO PIN (again):
Token successfully initialized
После форматирования ключа необходимо проинициализировать PIN пользователя, в выводе команды, в строке token flags, должен присутствовать флаг PIN initialized:
$ pkcs11-tool -L --module /usr/lib64/pkcs11/libjcPKCS11-2.so
Available slots:
Slot 1 (0x2ffff): ACS ACR38U-CCID 00 00
token label : JacartaPKI
token manufacturer : Aladdin R.D.
token model : JaCarta Laser
token flags : login required, token initialized, readonly
hardware version : 1.0
firmware version : 1.0
serial num : 4E43002303465331
pin min/max : 4/10
Иинициализация PIN-кода
Для инициализации PIN-кода необходимо выполнить команду (потребуется ввести so-pin карты, а затем дважды ввести новый PIN-код):
$ pkcs11-tool --init-pin -l --module /usr/lib64/pkcs11/libjcPKCS11-2.so
Using slot 0 with a present token (0x1)
Logging in to "JacartaPKI".
Please enter SO PIN:
Please enter the new PIN:
Please enter the new PIN again:
User PIN successfully initialized
Смена PIN-кода
Для смены PIN-кода необходимо выполнить команду (потребуется ввести текущий PIN-код, а затем дважды ввести новый):
$ pkcs11-tool --change-pin --module /usr/lib64/pkcs11/libjcPKCS11-2.so
Using slot 0 with a present token (0x1)
Please enter the current PIN:
Please enter the new PIN:
Please enter the new PIN again:
PIN successfully changed
Удаление объекта
Для удаления объекта необходимо указать его тип и идентификатор (id) или название (label). Открытый и закрытый ключ удаляются отдельно.
$ pkcs11-tool -b -y privkey --login --id 1024 --module /usr/lib64/pkcs11/libjcPKCS11-2.so
Типы объектов:
- privkey – закрытый ключ;
- pubkey – открытый ключ;
- cert – сертификат.
Создание ключевой пары
Генерация пары ключей:
$ pkcs11-tool --module /usr/lib64/pkcs11/libjcPKCS11-2.so --keypairgen --key-type rsa:1024 --login --id 2222 --label myrsakey
Using slot 0 with a present token (0x1ffff)
Logging in to "JaCarta#4E46001119145046".
Please enter User PIN:
Key pair generated:
Private Key Object; RSA
label: myrsakey
ID: 2222
Usage: decrypt, sign, unwrap
warning: PKCS11 function C_GetAttributeValue(ALWAYS_AUTHENTICATE) failed: rv = CKR_ATTRIBUTE_TYPE_INVALID (0x12)
Public Key Object; RSA 1024 bits
label: myrsakey
ID: 2222
Usage: encrypt, verify, wrap
Сертификаты
Получение сертификата
Запрос на сертификат необходимо подписать в аккредитованном удостоверяющем центре.
Запись сертификата
Запись сертификата на токен:
$ pkcs11-tool --module /usr/lib64/pkcs11/libjcPKCS11-2.so --pin 11111111 --write-object ./cert.der --type cert --id 0101
Using slot 0 with a present token (0x1ffff)
Created certificate:
Certificate Object; type = X.509 cert
label:
subject: DN: CN=\xd0\x98\xd0\xb2\xd0\xb0\xd0\xbd\xd0\xbe\xd0\xb2 \xd0\x98\xd0\xb2\xd0\xb0\xd0\xbd \xd0\x98\xd0\xb2\xd0\xb0\xd0\xbd\xd0\xbe\xd0\xb2\xd0\xb8\xd1\x87, C=RU, L=\xD0\xB3. \xD0\x9A\xD0\xB0\xD0\xBB\xD0\xB8\xD0\xBD\xD0\xB8\xD0\xBD\xD0\xB3\xD1\x80\xD0\xB0\xD0\xB4/street=\xd0\x9f\xd1\x80-\xd1\x82 \xd0\x9f\xd0\xbe\xd0\xb1\xd0\xb5\xd0\xb4\xd1\x8b 14 \xD0\xBA\xD0\xB2. 3, emailAddress=ivanov@mail.mail
ID: 0101
Чтение сертификата
Если на карте имеется сертификат, его можно прочитать командой:
$ pkcs11-tool --read-object --type cert --login --id 0101 --module /usr/lib64/pkcs11/libjcPKCS11-2.so
ID сертификата можно посмотреть, выведя список объектов на токене:
$ pkcs11-tool --module /usr/lib64/pkcs11/libjcPKCS11-2.so -O
КриптоПро
Подробнее о КриптоПро: КриптоПро
- КриптоПро CSP 5.0 R3 - 5.0.12500 - OK
- КриптоПро CSP 5.0 R2 - 5.0.12000 - OK
- КриптоПро CSP 4.0 R4 - OK
- КриптоПро CSP 3.9 R2 - 3.9.8495 - OK
- КриптоПро CSP 4.0 R2 - 4.0.9842 - OK
- КриптоПро CSP 3.6 R4 - 3.6.7777 - не работает
Установка КриптоПро
1. Установите метапакет cryptopro-preinstall-full для установки всех необходимых зависимостей:
# apt-get install cryptopro-preinstall-full
2. Скачайте архив с RPM-пакетами с оф.сайта КриптоПро - linux-amd64.tgz
3. Выполните под рутом из папки с распакованным архивом следующие команды:
# sh install.sh # apt-get install cprocsp-curl* lsb-cprocsp-base* lsb-cprocsp-capilite* lsb-cprocsp-kc1* cprocsp-rdr-jacarta* \ cprocsp-rdr-gui-gtk* cprocsp-rdr-rutoken* cprocsp-rdr-pcsc* lsb-cprocsp-pkcs11* lsb-cprocsp-rdr-64*
1. Скачайте МП с сайта Аладдина: http://www.aladdin-rd.ru/support/downloads/29369/
2. Установите RPM-пакет из архива:
# apt-get install cprocsp-rdr-jacarta-3.6.1-3.6.404-1.x86_64.rpm3. Желательно перезагрузить компьютер.
Управление считывателями
Просмотр доступных считывателей:
$ csptest -enum -info -type PP_ENUMREADERS | iconv -f cp1251
CSP (Type:80) v5.0.10001 KC1 Release Ver:5.0.11319 OS:Linux CPU:AMD64 FastCode:READY:AVX.
CryptAcquireContext succeeded.HCRYPTPROV: 32655395
GetProvParam(...PP_ENUMREADERS...) until it returns false
Len Byte NickName/Name
_____________________________
0x012a 0x03 Aladdin R.D. JaCarta [SCR Interface] (000000000000) 00 00
Aladdin R.D. JaCarta [SCR Interface] (000000000000) 00 00
0x012a 0x01 FLASH
FLASH
0x012a 0x00 HDIMAGE
HDD key storage
Cycle exit when getting data. 3 items found. Level completed without problems.
Total: SYS: 0,030 sec USR: 0,030 sec UTC: 0,070 sec
[ErrorCode: 0x00000000]
Инициализация считывателя HDIMAGE (под правами root):
# /opt/cprocsp/sbin/amd64/cpconfig -hardware reader -add 'Aladdin R.D. JaCarta [SCR Interface] (000000000000) 00 00' -name 'Jacarta'
Adding new reader:
Nick name: Aladdin R.D. JaCarta [SCR Interface] (000000000000) 00 00
Name device: Jacarta
Succeeded, code:0x0
Создание контейнера на токене/смарт-карте:
$ csptest -keyset -provtype 80 -newkeyset -cont '\\.\Aladdin R.D. JaCarta [SCR Interface] (000000000000) 00 00\Jacarta'
CSP (Type:80) v5.0.10001 KC1 Release Ver:5.0.11319 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 21797187
GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2012 KC1 CSP
Container name: "Jacarta"
Signature key is not available.
Attempting to create a signature key...
a signature key created.
Exchange key is not available.
Attempting to create an exchange key...
an exchange key created.
Keys in container:
signature key
exchange key
Extensions:
OID: 1.2.643.2.2.37.3.9
PrivKey: Not specified - 27.05.2020 18:54:04 (UTC)
OID: 1.2.643.2.2.37.3.10
PrivKey: Not specified - 27.05.2020 18:54:35 (UTC)
Total: SYS: 0,210 sec USR: 0,200 sec UTC: 45,550 sec
[ErrorCode: 0x00000000]
При установленном пакете cprocsp-rdr-gui-gtk будет показано графическое окно, где будет предложено перемещать указатель мыши или нажимать клавиши:
При установленном пакете cprocsp-rdr-gui-gtk будет показано графическое окно, где будет предложено перемещать указатель мыши или нажимать клавиши:
После этого необходимо предъявить PIN-код пользователя:
После указания PIN-кода снова будет предложено перемещать указатель мыши.
Создание неизвлекаемого контейнера:
В этом случае будет использована встроенная криптография носителя. В этом случае см. JaCarta/ГОСТ
Создание обычного контейнера:
Проверить наличие контейнеров можно с помощью команды:
$ csptest -keyset -enum_cont -fqcn -verifyc | iconv -f cp1251
CSP (Type:80) v5.0.10001 KC1 Release Ver:5.0.11319 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 16152611
\\.\Aladdin R.D. JaCarta [SCR Interface] (000000000000) 00 00\Jacarta
OK.
Total: SYS: 0,090 sec USR: 0,040 sec UTC: 4,470 sec
[ErrorCode: 0x00000000]
Просмотр подробной информации о контейнере:
$ csptestf -keyset -container '\\.\Aladdin R.D. JaCarta [SCR Interface] (000000000000) 00 00\Jacarta' -info
Удалить контейнер можно с помощью команды:
$ csptestf -keyset -deletekeyset -cont '\\.\Aladdin R.D. JaCarta [SCR Interface] (000000000000) 00 00\Jacarta'
Управление сертификатами
Создание запроса на получение сертификата
Создание запроса на получение сертификата средствами КриптоПро:
$ cryptcp -creatrqst -dn "список имён полей" -cont 'путь к контейнеру' <название_файла>.csr
Например:
cryptcp -creatrqst \
-dn "E=ivanov@mail.mail,CN=Иванов Иван Иванович,SN=Иванов,G=Иван Иванович,C=RU,L=Калининград,ST=39 Калининградская обл.,street=Пр-т Победы 14 кв.3" \
-provtype 80 -nokeygen \
-cont '\\.\Aladdin R.D. JaCarta [SCR Interface] (000000000000) 00 00\Jacarta' \
-certusage "1.3.6.1.5.5.7.3.4,1.3.6.1.5.5.7.3.2" jacarta.req
CryptCP 5.0 (c) "КРИПТО-ПРО", 2002-2018.
Утилита командной строки для подписи и шифрования файлов.
Запрос успешно создан и сохранен в файле.
[ErrorCode: 0x00000000]
Запрос на сертификат необходимо подписать в аккредитованном удостоверяющем центре.
Запись сертификата клиента в контейнер:
$ certmgr -inst -file jacarta.cer -store uMy -cont '\\.\Aladdin R.D. JaCarta [SCR Interface] (000000000000) 00 00\Jacarta' -inst_to_cont
Installing:
=============================================================================
1-------
Issuer : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2
Subject : E=ivanov@mail.mail
Serial : 0x120032E7B852F4CC6681F6887500000032E7B8
SHA1 Hash : 33ba9e77ead5e56c01c71c32e53241b8904f8688
SubjKeyID : 860b17ff1114be40161396a5d536ce3dd19bb2f7
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2012 (512 bits)
Not valid before : 27/02/2019 18:56:15 UTC
Not valid after : 27/05/2019 19:06:15 UTC
PrivateKey Link : No
CA cert URL : http://testca.cryptopro.ru/CertEnroll/test-ca-2014_CRYPTO-PRO%20Test%20Center%202.crt
OCSP URL : http://testca.cryptopro.ru/ocsp/ocsp.srf
CDP : http://testca.cryptopro.ru/CertEnroll/CRYPTO-PRO%20Test%20Center%202.crl
Extended Key Usage : 1.3.6.1.5.5.7.3.4
1.3.6.1.5.5.7.3.2
=============================================================================
Запись сертификата УЦ:
# /opt/cprocsp/bin/amd64/certmgr -inst -file cc.cer -store uRoot
Installing:
=============================================================================
1-------
Issuer : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2
Subject : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2
Serial : 0x2B6E3351FD6EB2AD48200203CB5BA141
SHA1 Hash : 046255290b0eb1cdd1797d9ab8c81f699e3687f3
SubjKeyID : 15317cb08d1ade66d7159c4952971724b9017a83
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
Not valid before : 05/08/2014 13:44:24 UTC
Not valid after : 05/08/2019 13:54:03 UTC
PrivateKey Link : No
=============================================================================
[ErrorCode: 0x00000000]
ПО JaCarta (Athena IDProtect)
Установка ПО JaCarta
- Скачать пакет с ПО и драйверами с официального сайта aladdin-rd.ru — http://www.aladdin-rd.ru/support/downloads/39875/
- Распаковать архив и установить из него два пакета idprotectclient и idprotectclientlib (x86_64):
- apt-get install idprotectclient*.x86_64.rpm
- Из меню доступны программы (пункт «Athena IDProtect Client»):