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 00Cлужба 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]Примечание:
Если такой пакет не установлен, будет предложено ввести любые символы с клавиатуры.

После этого необходимо предъявить 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_certificates5 Настраиваем 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

после этого выполняем
в появившемся окне ставим галку в 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







