Электронная подпись в доверенной среде на базe загрузочной Ubuntu 14.04 LTS и Рутокен ЭЦП Flash / Хабр

Что получилось

Ниже показан процесс загрузки с Рутокен ЭЦП Flash и подпись документов в браузере в доверенной среде:

1. Boot-меню в bios

2. Выбор нужного пункта в меню загрузчика

3. Ubuntu загрузилась, запускаем браузер, заходим в демо-систему. Браузер спрашивает у пользователя позволения запустить плагин на web-странице

4. Разрешаем плагину «Rutoken» загрузиться — нажимаем «Allow» в правом верхнем углу браузера

5. F5

6. Авторизация в системе по сертификату, который хранится на Рутокен ЭЦП Flash

Вводим PIN-код:

6. Подпись платежек в личном кабинете

Библиотека для работы с рутокен эцп 2.0[править]

Для работы должна быть установлена библиотека librtpkcs11ecp:

Генерация пары ключей и формирование запроса на сертификат[править]

Для генерации пары ключей и формированию запроса на сертификат с помощью ПО «Центр регистрации Рутокен» следует:

Добавление (запись) сертификатов[править]

Добавление сертификата, без привязки к ключам (только проверка ЭЦП):

Ассоциировать сертификат с контейнером, сертификат попадет в пользовательское хранилище uMy:

Запись сертификата клиента в контейнер:

Добавление сертификата УЦ из файла certne_ucw.cer в хранилище машины (с правами root):

Добавление корневых сертификатов из файла cert.p7b (под root):

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

Значения pin-кодов на рутокен по умолчанию[править]

У Рутокен:
PIN-коды Рутокен S/Lite/ЭЦП 2.0, установленные по умолчанию — Пользователь: 12345678; Администратор: 87654321

У Рутокен Web:
PIN на скретч-карте.

Подробнее о КриптоПро: КриптоПро
Для поддержки Рутокен в качестве ключевого носителя в СКЗИ «КриптоПро CSP» необходимо установить модуль поддержки (из архива КриптоПро):

Изменение pin-кода[править]

Для изменения PIN-кода введите команду:

где
pin — текущий PIN-код устройства;
new-pin — новый PIN-код устройства.

Инициализация токена[править]

Внимание! При инициализации все данные с токена будут удалены!

Для инициализации токена следует выполнить команду (необходимо ввести so-pin карты 2 раза или передать его в качестве параметра –so-pin):

Модификация образа ubuntu

В качестве станка для кастомизации Ubuntu у меня был тоже Ubuntu.

Подготовка:

sudo su
apt-get install squashfs-tools genisoimage

Скачиваем ISO-образ Ubuntu 14.04 и складируем его куда надо:

mkdir ~/livecdtmp
mv ubuntu-14.04.1-desktop-i386.iso ~/livecdtmp
cd ~/livecdtmp

Монтируем ISO-образ:

sudo su
mkdir mnt
mount -o loop ubuntu-14.04.1-desktop-i386.iso mnt

Делаем экстракт образа:

sudo su
mkdir extract-cd
rsync --exclude=/casper/filesystem.squashfs -a mnt/ extract-cd

Ну и так далее:

sudo su
unsquashfs mnt/casper/filesystem.squashfs
mv squashfs-root editsudo su
cp /etc/resolv.conf edit/etc/
cp /etc/hosts edit/etc/
mount --bind /dev/ edit/dev
chroot edit
mount -t proc none /proc
mount -t sysfs none /sys
mount -t devpts none /dev/pts
export HOME=/root
export LC_ALL=C
dbus-uuidgen > /var/lib/dbus/machine-id
dpkg-divert --local --rename --add /sbin/initctl
ln -s /bin/true /sbin/initctl

Собственно кастомизация — установка смарткарточного драйвера и плагина:

pt-get install libccid libpcsclite1 pcscd
mkdir /home/ubuntu/.mozilla
mkdir /home/ubuntu/.mozilla/plugins
chmod 776 /home/ubuntu/.mozilla
chmod 776 /home/ubuntu/.mozilla/plugins
cp npCryptoPlugin.so /home/ubuntu/.mozilla/plugins
cp librtpkcs11ecp.so /home/ubuntu/.mozilla/plugins

И технические работы по созданию нового ISO:

Читайте также:  Конструируем локальный криптографический TLS-прокси c HTTP API электронной подписи / Хабр

Настройка аутентификации[править]

С помощью следующих инструкций можно настроить аутентификацию в системе с помощью сертификата и ключа на Рутокен ЭЦП:

Также с его помощью может быть реализована двухфакторная аутентификация.

Проверка наличия сертификатов и ключевых пар[править]

Просмотреть имеющуюся на токене информацию можно при помощи команды (требуется пароль от токена):

В результате в окне терминала отобразится информация обо всех сертификатах и ключевых парах, хранящихся на Рутокене.

Чтобы открыть сертификат или ключевую пару скопируйте ID необходимого объекта и введите команду:

В результате в окне Терминала отобразится полная информация об указанном объекте.

Чтобы скопировать сертификат в файл введите команду:

Проверка работы рутокен эцп в системе[править]

Проверяем работу токена, он должен быть виден в списке:

Список поддерживаемых механизмов:

$ pkcs11-tool -v --module /usr/lib64/pkcs11/librtpkcs11ecp.so --list-mechanisms
Using slot 0 with a present token (0x0)
Supported mechanisms:
  RSA-PKCS-KEY-PAIR-GEN, keySize={512,2048}, hw, generate_key_pair
  RSA-PKCS, keySize={512,2048}, hw, encrypt, decrypt, sign, verify
  RSA-PKCS-OAEP, keySize={512,2048}, hw, encrypt, decrypt
  MD5, digest
  SHA-1, digest
  GOSTR3410-KEY-PAIR-GEN, hw, generate_key_pair
  GOSTR3410, hw, sign, verify
  mechtype-0x1204, hw, derive
  GOSTR3411, hw, digest
  GOSTR3410-WITH-GOSTR3411, hw, digest, sign
  mechtype-0x1224, hw, wrap, unwrap
  mechtype-0x1221, hw, encrypt, decrypt
  mechtype-0x1222, hw, encrypt, decrypt
  mechtype-0x1220, hw, generate
  mechtype-0x1223, hw, sign, verify
  mechtype-0x1211, sign, verify

Проверка работы[править]

Проверяем работу токена, он должен быть виден в списке:

Просмотреть имеющуюся на токене информацию можно при помощи команды (требуется пароль от токена):

Просмотр сертификатов[править]

Просмотр сертификатов:

Просмотр сертификатов в локальном хранилище uMy:

Просмотр сертификатов в контейнере:

$ certmgr -list -container '\.Aktiv Rutoken ECP - CP 00 00Rutoken'
Certmgr 1.1 (c) "Crypto-Pro",  2007-2021.
program for managing certificates, CRLs and stores

=============================================================================
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, CN=Иванов Иван Иванович, SN=Иванов, G=Иван Иванович, C=RU, S=39 Калининградская обл., L=Калининград, STREET=Пр-т Победы 14 кв.3
Serial              : 0x120032F1A2A438324D0C0EFA2900000032F1A2
SHA1 Hash           : 85b37ce3e2fce0f86f7847000eafca0a9c5df274
SubjKeyID           : c16fc96ae4670ac21b219434caae3a9f68b54ca2
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2021 (512 bits)
Not valid before    : 05/03/2021  10:56:32 UTC
Not valid after     : 05/06/2021  11:06:32 UTC
PrivateKey Link     : Certificate from container. No link to key
CA cert URL         : http://testca.cryptopro.ru/CertEnroll/test-ca-2021_CRYPTO-PRO Test Center 2.crt
OCSP URL            : http://testca.cryptopro.ru/ocsp/ocsp.srf
CDP                 : http://testca.cryptopro.ru/CertEnroll/CRYPTO-PRO Test Center 2.crl
Extended Key Usage  : 1.3.6.1.5.5.7.3.4
                      1.3.6.1.5.5.7.3.2
                      1.3.6.1.4.1.311.10.3.12
=============================================================================

[ErrorCode: 0x00000000]

Просмотр корневых сертификатов:

Разблокировка pin-кода[править]

Для того чтобы разблокировать PIN-код необходимо выполнить команду (потребуется ввести so-pin карты, а затем дважды ввести новый PIN-код):

Смена pin-кода[править]

Для смены PIN-кода необходимо выполнить команду (потребуется ввести текущий PIN-код, а затем дважды ввести новый):

Читайте также:  Как получить ЭЦП для ИП для налоговой инспекции ФНС

Создание загрузочного устройства

Первым делом отформатируем Рутокен ЭЦП FLASH специальной утилитой, выставив памяти атрибут read-write (под виндой):

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

Создание запроса на получение сертификата средствами КриптоПро:

Например:

$ 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.req
CryptCP 5.0 (c) "КРИПТО-ПРО", 2002-2021.
Утилита командной строки для подписи и шифрования файлов.
Запрос успешно создан и сохранен в файле.
[ErrorCode: 0x00000000]

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

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

Для создания электронной подписи файла необходимо указать сертификат и имя подписываемого файла:

$ cryptcp -sign -dn E=ivanov@mail.mail -der my_file.odt 
CryptCP 5.0 (c) "КРИПТО-ПРО", 2002-2021.
Утилита командной строки для подписи и шифрования файлов.

Будет использован следующий сертификат:
Субъект:11223344556, 102301111222, Пр-т Победы 14 кв.3, Калининград, 39 Калининградская обл., RU, ivanov@mail.mail, Иван Иванович, Иванов, Иванов Иван Иванович
Действителен с 27.02.2021 13:41:47 по 27.05.2021 13:51:47

Цепочки сертификатов проверены.
Папка './':
my_file.odt... Подпись данных...    
    
Подписанное сообщение успешно создано.
[ErrorCode: 0x00000000]

На выходе появится файл my_file.odt.sig, содержащий как сам подписываемый файл, так и электронную подпись.
Для проверки прикреплённой подписи выполните команду:

$ cryptcp -verify my_file.odt.sig
CryptCP 5.0 (c) "КРИПТО-ПРО", 2002-2021.
Утилита командной строки для подписи и шифрования файлов.

Найдено сертификатов: 2
Цепочки сертификатов проверены.
Папка './':
my_file.odt.sig... Проверка подписи...     
Автор подписи: 11223344556, 102301111222, Пр-т Победы 14 кв.3, Калининград, 39 Калининградская обл., RU, ivanov@mail.mail, Иван Иванович, Иванов, Иванов Иван Иванович
 Подпись проверена.
[ErrorCode: 0x00000000]

Для извлечения файла с данными из файла электронной подписи необходимо указать имя файла, в который будут извлечены данные, в конце команды проверки подписи:

Для создания откреплённой (detached) подписи необходимо заменить ключ -sign на -signf:

Проверка откреплённой подписи:

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

Создание ключевой пары[править]

Создание ключевой пары по алгоритму ГОСТ-2001 (PIN-код пользователя указывается в опции –pin, или запрашивается, если опцию не задать):

Создание ключевой пары RSA 2048 (запрашивается PIN-код пользователя):

Примечание: Рекомендуемая длина ключа RSA — не ниже 2048 бит.

Примечание: Если у вас уже имеется выписанная на токен ключевая пара RSA с привязанным к ней сертификатом, то вы можете использовать их для аутентификации.

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

Создание контейнера на токене/смарт-карте:

Читайте также:  Сертификат в Сбербанк Бизнес Онлайн

При установленном пакете cprocsp-rdr-gui-gtk будет показано графическое окно, где будет предложено перемещать указатель мыши или нажимать клавиши:

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

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

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

Проверить наличие контейнеров можно с помощью команды:

Просмотр подробной информации о контейнере:

Удалить контейнер можно с помощью команды:

Удаление объекта[править]

Для удаления объекта необходимо указать его тип и идентификатор (id) или название (label). Открытый и закрытый ключ удаляются отдельно.

Типы объектов:

  • privkey – закрытый ключ;
  • pubkey – открытый ключ;
  • cert – сертификат.

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

Проверка видимости токена:

Просмотр доступных считывателей:

Инициализация считывателя Aktiv Co. Rutoken S 00 00 (требуется, если считыватель есть в списке видимых считывателей и отсутствует в списке настроенных), в параметре -add указывается имя, которое было получено при просмотре видимых считывателей, в параметре -name — удобное для обращения к считывателю имя, например, Rutoken (под правами root):

Установка «рутокен плагин»[править]

Рутокен Плагин представляет собой решение для электронной подписи, шифрования и двухфакторной аутентификации для Web- и SaaS-сервисов.
Плагин необходим для связи USB-устройств c браузером, он позволяет опознавать и работать с ними. Для того чтобы установить плагин, необходимо загрузить соответствующий установочный файл и запустить его

Чтобы установить «Рутокен плагин» необходимо:

  1. Загрузить «Рутокен плагин» со страницы по ссылке (выбрать пакет формата «rpm»):
    Загрузка «Рутокен плагин»
  2. Установить «Рутокен плагин». Для этого в контекстном меню скаченного файла выбрать пункт «Открыть в Установка RPM». В открывшемся окне нажать кнопку «Установить»:
    Установка пакетов RPM
    Ввести пароль администратора системы и нажать кнопку «ОК»:
    Ввод пароля администратора системы
    В открывшемся окне нажать кнопку «Установить»:
    Установка пакетов RPM
    Или установить «Рутокен плагин», выполнив из папки с загруженным пакетом команду (под правами root):
  3. Перезапустить браузер.
  4. Убедиться, что плагин установлен и включен. Сделать это можно на странице about:addons (или about:plugins в более ранних версиях Mozilla Firefox):
    Рутокен плагин

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

Должны быть установлены пакеты:

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector