Рутокен эцп ubuntu

1 Устанавливаем необходимые пакеты и их зависимости

$ sudo apt-get install opensc libccid libpam-p11 libp11-2 libengine-pkcs11-openssl

Пуск – Настройки – Менеджер пакетов Synaptic

через Быстрый фильтр или через поиск находим и отмечаем к установке следующие пакеты: 

  • opensc
  • libccid
  • libpam-p11
  • libp11-2
  • libengine-pkcs11-openssl

Управление считывателями[править]

$ list_pcscAktiv Co. Rutoken S 00 00
Примечание:

Cлужба pcscd должна быть запущена. Запустить службу pcscd и добавить её в автозапуск при загрузке системы:

# systemctl start pcscd# systemctl enable pcscd

Если при токен не виден может потребоваться удалить пакет pcsc-lite-openct:

# remove pcsc-lite-openct
$ csptest -enum -info -type PP_ENUMREADERS | iconv -f cp1251CSP (Type:80) v5.0.10001 KC1 Release Ver:5.0.11319 OS:Linux CPU:AMD64 FastCode:READY:AVX.
CryptAcquireContext succeeded.HCRYPTPROV: 26310531
GetProvParam(...PP_ENUMREADERS...) until it returns false Len Byte NickName/Name
_____________________________ 0x012a 0x03 Aktiv Co. Rutoken S 00 00 MyRutoken 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,040 sec USR: 0,040 sec UTC: 0,160 sec
[ErrorCode: 0x00000000]
# cpconfig -hardware reader -add "Aktiv Co. Rutoken S 00 00" -name "MyRutoken"Adding new reader:
Nick name: Aktiv Co. Rutoken S 00 00
Name device: MyRutoken
Succeeded, code:0x0
Примечание:

Если получаете ошибку:

-bash: cpconfig: команда не найдена

Выполните:

exportPATH="$(/bin/ls -d /opt/cprocsp/{s,}bin/*|tr 'n'':')$PATH"

Для пользователя root будет действовать до перезагрузки

$ cryptcp -creatrqst -dn "список имён полей" -cont 'путь к контейнеру' {amp}lt;название_файла{amp}gt;.csr
$ cryptcp -creatrqst -dn "E=ivanov@mail.mail,CN=Иванов Иван Иванович,SN=Иванов,G=Иван Иванович,C=RU,L=Калининград,ST=39 Калининградская обл.,street=Пр-т Победы 14 кв.3" -provtype 80 -nokeygen -cont '\.Aktiv Co. Rutoken S 00 00Rutoken' -certusage "1.3.6.1.5.5.7.3.4,1.3.6.1.5.5.7.3.2" rutoken.reqCryptCP 5.0 (c) "КРИПТО-ПРО", 2002-2018.
Утилита командной строки для подписи и шифрования файлов.
Запрос успешно создан и сохранен в файле.
[ErrorCode: 0x00000000]

Запрос на сертификат необходимо подписать в аккредитованном удостоверяющем центре.

$ certmgr -inst -file cert.cer
$ certmgr -inst -file cert.cer -store uMy -cont '\.Aktiv Co. Rutoken S 00 00Rutoken'
$ cryptcp -instcert -provtype 80 -ku -askpin rutoken.cer CryptCP 5.0 (c) "КРИПТО-ПРО", 2002-2018.
Утилита командной строки для подписи и шифрования файлов.
Пожалуйста, выберите нужный контейнер (введите его номер и нажмите [Enter]).
#1: Rutoken
#2: 506c7567696e3036303232303139313831333030
#3: test
Номер:1
Введите пароль для контейнера Rutoken:
Сертификат был успешно установлен.
[ErrorCode: 0x00000000]
# /opt/cprocsp/bin/amd64/certmgr -inst -file certne_ucw.cer -store mRoot
# /opt/cprocsp/bin/amd64/certmgr -inst -all -file cert.p7b -store mRoot

Необходимо последовательно добавить все сертификаты.

$ certmgr -list -store uMy

Создание и проверка подписи[править]

$ csptest -keyset -provtype 80 -newkeyset -cont '\.Aktiv Co. Rutoken S 00 00Rutoken' CSP (Type:80) v5.0.10001 KC1 Release Ver:5.0.11319 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 13027379
GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2012 KC1 CSP
Container name: "Rutoken
"
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 - 28.05.2020 11:35:54 (UTC) OID: 1.2.643.2.2.37.3.10 PrivKey: Not specified - 28.05.2020 11:37:29 (UTC)
Total: SYS: 0,180 sec USR: 0,050 sec UTC: 107,930 sec
[ErrorCode: 0x00000000]

Примечание:
Если такой пакет не установлен, будет предложено ввести любые символы с клавиатуры.

Рутокен эцп ubuntu

После этого необходимо предъявить PIN-код пользователя.

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

Примечание:

Если используется модель Рутокен ЭЦП, можно будет выбрать способ создания контейнера.

Создание неизвлекаемого контейнера:

Создание неизвлекаемого контейнера

В этом случае будет использована встроенная криптография носителя.

Создание контейнера КриптоПро:

Создание обычного контейнера

В этом случае будет использована криптография КриптоПро

$ csptest -keyset -enum_cont -fqcn -verifyc | iconv -f cp1251CSP (Type:80) v5.0.10001 KC1 Release Ver:5.0.11319 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 22009731
\.Aktiv Co. Rutoken S 00 00Rutoken
OK.
Total: SYS: 0,030 sec USR: 0,050 sec UTC: 2,400 sec
[ErrorCode: 0x00000000]
$ csptestf -keyset -container '\.Aktiv Co. Rutoken S 00 00Rutoken' -info
$ csptestf -keyset -deletekeyset -cont '\.Aktiv Co. Rutoken S 00 00Rutoken'
$ cryptcp -sign -dn E=ivanov@mail.mail -der my_file.odt CryptCP 5.0 (c) "КРИПТО-ПРО", 2002-2018.
Утилита командной строки для подписи и шифрования файлов.
Будет использован следующий сертификат:
Субъект:11223344556, 102301111222, Пр-т Победы 14 кв.3, Калининград, 39 Калининградская обл., RU, ivanov@mail.mail, Иван Иванович, Иванов, Иванов Иван Иванович
Действителен с 27.02.2019 13:41:47 по 27.05.2019 13:51:47
Цепочки сертификатов проверены.
Папка './':
my_file.odt... Подпись данных...
Подписанное сообщение успешно создано.
[ErrorCode: 0x00000000]
$ cryptcp -verify my_file.odt.sigCryptCP 5.0 (c) "КРИПТО-ПРО", 2002-2018.
Утилита командной строки для подписи и шифрования файлов.
Найдено сертификатов: 2
Цепочки сертификатов проверены.
Папка './':
my_file.odt.sig... Проверка подписи...
Автор подписи: 11223344556, 102301111222, Пр-т Победы 14 кв.3, Калининград, 39 Калининградская обл., RU, ivanov@mail.mail, Иван Иванович, Иванов, Иванов Иван Иванович Подпись проверена.
[ErrorCode: 0x00000000]
$ cryptcp -verify my_file.odt.sig new_file.odt
$ cryptcp -signf -dn E=ivanov@mail.mail -der my_file.odt
$ cryptcp -vsignf my_file.odt

Внимание! Rutoken S — не является токеном — нет аппаратной поддержки алгоритмов, а для использования RSA в opensc {amp}lt; 0.12 были реализованы выгрузкаприватного (!!!) ключа из Rutoken S и работа с этим ключом через openssl.

Центр регистрации Рутокен[править]

Для проверки воспользуемся терминалом. Пуск – утилиты – Терминал Fly.

$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T 

В случае если увидите строку, показанную ниже, значит токен или смарт-карта работают корректно.

Rutoken ECP {amp}lt;no label{amp}gt; 

Модифицируем конфигурационный файл OpenSSL, который находится по адресу /usr/lib/ssl/openssl.cn

openssl_conf = openssl_def
[openssl_def]
engines = engine_section
[engine_section]
gost = gost_section
pkcs11 = pkcs11_section
[gost_section]
engine_id = gost
dynamic_path = /usr/lib/i386-linux-gnu/openssl-1.0.0/engines/libgost.so
default_algorithms = ALL
init = 0
[pkcs11_section]
engine_id = pkcs11_gost
dynamic_path = /usr/lib/i386-linux-gnu/openssl-1.0.0/engines/libpkcs11gost-engine.so
MODULE_PATH = /usr/lib/librtpkcs11ecp.so
init = 0

Пуск – утилиты – Терминал Fly

Конвертируем сертификат в текстовый формат

OpenSSL{amp}gt; x509 -in cert.crt -out cert.pem -inform DER -outform PEM

Добавляем сертификат в список доверенных сертификатов

$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem {amp}gt;{amp}gt; ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates

5 Настраиваем OpenSSL для работы с нашим модулем

https://www.youtube.com/watch?v=ytcopyrightru

Для загрузки этого модуля с нашего сайта вы можете воспользоваться ссылками.

$ sudo nano /usr/share/pam-configs/p11

записываем в файл следующую информацию

Name: Pam_p11
Default: yes
Priority: 800
Auth-Type: Primary
Auth: sufficient pam_p11_opensc.so /usr/lib/librtpkcs11ecp.so

сохраняем файл, нажимаем Alt X, а затем Y

Stub.png

после этого выполняем

в появившемся окне ставим галку в Pam_p11 и нажимаем OK

Утилита pkcs11-tool[править]

Примечание:

С форума Рутокен: Если Вы хотите работать через opensc-pkcs11.so, то Вы должны обязательно предварительно отформатировать токен через pkcs15-init, а затем создавать и работать с ключами только через opensc-pkcs11.so.

Если Вы хотите работать через наш PKCS#11, то лучше всего форматировать через
Утилиту администрирования Рутокен, а затем создавать и работать с ключами только через наш PKCS#11. Это самый поддерживаемый путь. (не для Рутокен S??)

Вы можете отформатировать токен через pkcs15-init и работать с нашим PKCS#11. Но в этом случае через opensc-pkcs11.so ничего не будет доступно.

Примечание:

Rutoken S не поддерживает работу с библиотекой rtPKCS11ECP (librtpkcs11ecp.so), т.е. операции генерации и импорта ключей на Рутокен S выполнить не получится.

При работе с Рутокен S необходимо указывать путь до библиотеки opensc-pkcs11:

--module /usr/lib64/pkcs11/opensc-pkcs11.so
$ pkcs11-tool -v --module /usr/lib64/pkcs11/opensc-pkcs11.so --list-mechanismsUsing slot 0 with a present token (0x0)
Supported mechanisms: SHA-1, digest SHA256, digest SHA384, digest SHA512, digest MD5, digest RIPEMD160, digest GOSTR3411, digest
# apt-get install opensc pcsc-lite pcsc-lite-rutokens

В состав opensc входит универсальная утилита pkcs11-tool, которой можно «подложить», например, библиотеку PKCS#11 для работы с Рутокен ЭЦП 2.0 и с ее помощью «управлять» Рутокенами.

# apt-get install librtpkcs11ecp
Примечание:

При работе с Rutoken ЭЦП 2.0 необходимо указывать путь до библиотеки librtpkcs11ecp:

--module /usr/lib64/pkcs11/librtpkcs11ecp.so

Управление сертификатами[править]

Проверяем что на устройстве есть сертификат.

$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O 

Если после строчки 

Using slot 0 with a present token (0x0) 

нет ничего, значит устройство пустое. Обратитесь к администратору или создайте ключи и сертификат самостоятельно следуя пункту 4.1

Если после строчки

Using slot 0 with a present token (0x0)
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert --id {id} {amp}gt; cert.crt

вместо {id} нужно подставить ID который вы увидите в выводе предыдущей команды команды

$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O

В случае, если файл cert.crt создан переходим к пункту 5

генерируем ключевую пару 

$ openssl genpkey -engine pkcs11_gost -algorithm GOST2001 -pkeyopt key_id:50 -pkeyopt paramset:A -pkeyopt pin:12345678
  • key_id – ID ключа на токене
  • paramset – используемые параметры эллиптической кривой:
    • A – набор параметров с OID 1.2.643.2.2.35.1;

    • B – набор параметров с OID 1.2.643.2.2.35.2;

    • C  – набор параметров с OID 1.2.643.2.2.35.3;

    • XA – набор параметров с OID 1.2.643.2.2.36.0;

    • XB – набор параметров с OID 1.2.643.2.2.36.1;

  • pin – PIN-код токена

https://www.youtube.com/watch?v=ytcreatorsru

создаем самоподписанный сертификат

$ openssl req -engine pkcs11_gost -new -key 50 -keyform engine -x509 -out cert.crt -outform DER

загружаем сертификат на устройство

$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -l -y cert -w cert.crt --id 50

Читайте также:  Как разблокировать эцп рутокен
Оцените статью
ЭЦП Эксперт