0 Проверка модели устройства
- Подключите USB-токен к компьютеру.
- Для определения названия модели USB-токена откройте Терминал и введите команду:
...
Убедитесь, что используете: Aktiv Rutoken ECP
1 Устанавливаем необходимые пакеты
Code Block | ||
---|---|---|
| ||
sudo apt-get install libccid pcscd opensc openssl libpam-pkcs11 |
2 Добавляем PAM модуль с поддержкой ГОСТ-2012
Загружаем библиотеку через браузер
https://download.rutoken.ru/Rutoken/PAM/1.0.0/x86_64/librtpam.so.1.0.0
или через Терминал
Code Block | ||
---|---|---|
| ||
$ wget --no-check-certificate https://download.rutoken.ru/Rutoken/PAM/1.0.0/x86_64/librtpam.so.1.0.0 |
Копируем в системную папку
Code Block | ||
---|---|---|
| ||
$ sudo cp libpam_p11_opensclibrtpam.so.1.0.1.80 /usr/lib/x86_64-linux-gnu/ $ sudo chmod 644 /usr/lib/x86_64-linux-gnu/libpam_p11_opensclibrtpam.so.1.0.1.80 |
3 Добавляем библиотеку librtpkcs11ecp.so
Загружаем библиотеку через браузер.
Для 64-битной системы используйте ссылку:
https://download.rutoken.ru/Rutoken/PKCS11Lib/Current/Linux/x64/librtpkcs11ecp.so
Для 32-битной системы используйте ссылку:
https://download.rutoken.ru/Rutoken/PKCS11Lib/Current/Linux/x32x86_64/librtpkcs11ecp.so
или
...
через консоль
Пуск - Утилиты - Терминал Fly
Для 64-битной системы используйте:
Code Block | ||
---|---|---|
| ||
$ wget --no-check-certificate https://download.rutoken.ru/Rutoken/PKCS11Lib/Current/Linux/x86_64x64/librtpkcs11ecp.so |
Для 32-битной системы используйте:
Code Block | ||
---|---|---|
| ||
$ wget --no-check-certificate https://download.rutoken.ru/Rutoken/PKCS11Lib/Current/Linux/x32/librtpkcs11ecp.so |
Копируем в системную папку папку
Code Block | ||
---|---|---|
| ||
$ sudo cp librtpkcs11ecp.so /usr/lib/x86_64-linux-gnu/ $ sudo chmod 644 /usr/lib/x86_64-linux-gnu/librtpkcs11ecp.so |
...
4 Проверяем что Рутокен ЭЦП работает в системе
В Терминале
Code Block | ||
---|---|---|
| ||
$ pkcs11-tool --module /usr/lib/x86_64-linux-gnu/librtpkcs11ecp.so -T |
В случае если увидите вот такую строку, значит все хорошо.
Rutoken ECP <no label>
...
5 Считываем сертификат
Проверяем что на устройстве есть сертификат
...
Using slot 0 with a present token (0x0)
нет ничего, значит устройство пустое. Обратитесь к администратору или создайте ключи и сертификат самостоятельно следуя пункту 5.1
Если после строчки
Using slot 0 with a present token (0x0)
- выводится информация о ключах и сертификатах, то необходимо считать сертификат
...
- и сохранить на диск. Для этого выполните следующую команду, где
...
- вместо {id} нужно подставьте ID-сертификата, который вы
...
- увидели в выводе предыдущей команды:
Code Block | ||
---|---|---|
| ||
$ 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 Создаем самоподписанный сертификат
Info |
---|
Собирайте ветку pkcs11-tool с поддержкой ГОСТ-2012 из нашего GitHub-а, пока не выпущен релиз OpenSC новее чем 0.19.0. Или можно собирать утилиту из ветки master OpenSC взяв коммит 8cf1e6f |
Откройте Терминал
генерируем Генерируем ключевую пару с параметрами:
--
ГОСТ-2012 512 бит (параметр --key-type
: GOSTR3410-2012-512:
A в команде ниже) или ГОСТ-2012 (256) бит: --key-type
GOSTR3410-2012-256:A.
А
(ГОСТ-2012 512 бит c парамсетом А), GOSTR3410-2012-256:A
(ГОСТ-2012 256 бит с парамсетом A)
--id
: идентификатор объекта (CKA_ID) в виде двузначных номеров символов в hex из таблицы ASCII. Используйте только ASCII-коды печатных символов, т.к. id нужно будет передать OpenSSL в виде строки. Например ASCII-кодам “3132” соответствует строка "12".
Info |
---|
Для удобства, можно воспользоваться онлайн-сервисом конвертации строки в ASCII-коды. |
Code Block | ||
---|---|---|
| ||
$ ./pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --keypairgen --key-type GOSTR3410-2012-512:A -l --id 3132 |
...
Чтобы использовать этот id
ключевой пары, созданной через pkcs11-tool, в OpenSSL – надо использовать hex-символы из таблицы ASCII, соответствующие этим кодам.
Info |
---|
Для удобства, можно воспользоваться онлайн-сервисом конвертации : https://www.rapidtables.com/convert/number/hex-to-ascii.htmlACSII-кодов в строку. |
Например: для ‘--id 3132
’ в OpenSSL надо указывать "pkcs11:id=12
".
...
Code Block | ||
---|---|---|
| ||
$ pkcs11-tool --module /usr/x86_64-linux-gnu/librtpkcs11ecp.so -l -y cert -w cert.crt --id 3132 |
6 Регистрируем сертификат в системе
Откройте Терминал
Конвертируем сертификат в текстовый формат
...
Code Block | ||
---|---|---|
| ||
mkdir ~/.eid chmod 0755 ~/.eid cat cert.pem >> ~/.eid/authorized_certificates chmod 0644 ~/.eid/authorized_certificates |
7 Настраиваем аутентификацию
Откройте Терминал
Code Block | ||
---|---|---|
| ||
$ sudo nano /usr/share/pam-configs/p11rtpam-gost |
записываем создайте в файл следующую информациюс содержимым
Code Block | ||
---|---|---|
| ||
Name: Pam_p11 Rutoken PAM GOST Default: yes Priority: 800 Auth-Type: Primary Auth: sufficient usr/lib/x86_64-linux-gnu/libpam_p11_opensclibrtpam.so.1.0.1.80 /usr/lib/x86_64-linux-gnu/librtpkcs11ecp.so |
...
в появившемся окне ставим галку в Pam_p11 в "Rutoken PAM GOST" и нажимаем OK
8 Проверка
Откройте Терминал
Code Block | ||
---|---|---|
| ||
$ sudo login |
введите имя пользователя и в случае если система потребует PIN-код от устройства значит все настроено правильно
9 Блокировка компьютера при извлечении токена
В состав пакета libpam-pkcs11 входит утилита pkcs11_eventmgr, которая позволяет выполнять различные действия при возникновении событий PKCS#11.
Для настройки pkcs11_eventmgr служит файл конфигурации - /etc/pam_pkcs11/pkcs11_eventmgr.conf
Для различных дистрибутивов Линукс, команда которая вызывает блокировку учетной записи будет отличаться.
Пример файла конфигурации представлен ниже:
|
|
|
|
|
После этого добавьте приложение pkcs11_eventmgr в автозагрузку и перезагрузитесь.
...