0 Проверка модели устройства
- Подключите USB-токен к компьютеру.
- Для определения названия модели USB-токена откройте Терминал и введите команду:
$ lsusb
В результате в окне Терминала отобразится название модели USB-токена:
Убедитесь, что используете: Aktiv Rutoken ECP
1 Устанавливаем необходимые пакеты
sudo apt-get install pcscd opensc openssl
2 Добавляем PAM модуль с поддержкой ГОСТ-2012
Загружаем библиотеку через браузер
https://download.rutoken.ru/Rutoken/
Копируем в системную папку
$ sudo cp libpam_p11_opensc.so.0.1.8 /usr/lib/x86_64-linux-gnu/ $ sudo chmod 644 /usr/lib/x86_64-linux-gnu/libpam_p11_opensc.so.0.1.8
3 Добавляем библиотеку librtpkcs11ecp.so
Загружаем библиотеку через браузер
https://download.rutoken.ru/Rutoken/PKCS11Lib/Current/Linux/x86_64/librtpkcs11ecp.so
или через консоль
Откройте Терминал
$ wget --no-check-certificate https://download.rutoken.ru/Rutoken/PKCS11Lib/Current/Linux/x86_64/librtpkcs11ecp.so
Копируем в системную папку
$ sudo cp librtpkcs11ecp.so /usr/lib/x86_64-linux-gnu/ $ sudo chmod 644 /usr/lib/x86_64-linux-gnu/librtpkcs11ecp.so
5 Проверяем что Рутокен ЭЦП работает в системе
В Терминале
$ pkcs11-tool --module /usr/lib/x86_64-linux-gnu/librtpkcs11ecp.so -T
В случае если увидите вот такую строку, значит все хорошо.
Rutoken ECP <no label>
6 Считываем сертификат
Проверяем что на устройстве есть сертификат
Откройте Терминал
$ pkcs11-tool --module /usr/lib/x86_64-linux-gnu/librtpkcs11ecp.so -O
Если после строчки
Using slot 0 with a present token (0x0)
нет ничего, значит устройство пустое. Обратитесь к администратору или создайте ключи и сертификат самостоятельно следуя пункту 5.1
Если после строчки
Using slot 0 with a present token (0x0)
выводится информация о ключах и сертификатах то необходимо считать сертификат, для этого выполните команду, где вместо {id} нужно подставьте ID который вы увидите в выводе команды:
$ pkcs11-tool --module /usr/lib/x86_64-linux-gnu/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt
В случае, если файл cert.crt создан переходим к пункту 6
5.1 Создаем самоподписанный сертификат
Или можно собирать утилиту из ветки master OpenSC взяв коммит 8cf1e6f
Откройте Терминал
генерируем ключевую пару ГОСТ-2012 512 бит (параметр --key-type GOSTR3410-2012-512:A
в команде ниже) или ГОСТ-2012 (256) бит: --key-type
GOSTR3410-2012-256:A.
$ ./pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --keypairgen --key-type GOSTR3410-2012-512:A -l --id 3132
создаем самоподписанный сертификат. Для этого сначала надо установить и настроить для работы с Рутокен OpenSSL 1.1 или новее через специальный модуль rtengine
по инструкции: Установка и настройка OpenSSL
Чтобы использовать этот id
ключевой пары, созданной через pkcs11-tool, в OpenSSL – надо использовать hex-символы из таблицы ASCII, соответствующие этим кодам.
Удобно использовать онлайн-сервисом для конвертации: https://www.rapidtables.com/convert/number/hex-to-ascii.html
Например: для ‘--id 3132
’ в OpenSSL надо указывать "pkcs11:id=12
".
$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer
загружаем сертификат на устройство
$ pkcs11-tool --module /usr/x86_64-linux-gnu/librtpkcs11ecp.so -l -y cert -w cert.crt --id 3132
6 Регистрируем сертификат в системе
Откройте Терминал
Конвертируем сертификат в текстовый формат
openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM
mkdir ~/.eid chmod 0755 ~/.eid cat cert.pem >> ~/.eid/authorized_certificates chmod 0644 ~/.eid/authorized_certificates
7 Настраиваем аутентификацию
Откройте Терминал
$ sudo nano /usr/share/pam-configs/p11
записываем в файл следующую информацию
Name: Pam_p11 Default: yes Priority: 800 Auth-Type: Primary Auth: sufficient usr/lib/x86_64-linux-gnu/libpam_p11_opensc.so.0.1.8 /usr/lib/x86_64-linux-gnu/librtpkcs11ecp.so
$ sudo pam-auth-update
в появившемся окне ставим галку в Pam_p11 и нажимаем OK
8 Проверка
Откройте Терминал
$ sudo login
введите имя пользователя и в случае если система потребует PIN-код от устройства значит все настроено правильно
9 Блокировка компьютера при извлечении токена
В состав пакета libpam-pkcs11 входит утилита pkcs11_eventmgr, которая позволяет выполнять различные действия при возникновении событий PKCS#11.
Для настройки pkcs11_eventmgr служит файл конфигурации - /etc/pam_pkcs11/pkcs11_eventmgr.conf
Пример файла конфигурации представлен ниже:
|
После этого добавьте приложение pkcs11_eventmgr в автозагрузку и перезагрузитесь.