...
- Подключите USB-токен к компьютеру.
Для определения названия модели USB-токена откройте Терминал и введите команду:
...
Code Block language bash lsusb
В результате в окне Терминала отобразится название модели USB-токена:
...
Демонстрация работы проводится на Ubuntu 18.04. Описанная последовательность действий актуальна также для других версий Ubuntu и систем, основанных на Debian.
...
Code Block | ||
---|---|---|
| ||
sudo apt-get install pcscd opensc openssl libpam-p11 libengine-pkcs11-openssl |
Warning | |||||
---|---|---|---|---|---|
Если у вас в ОС установлен OpenSSL 3.х, необходимо обновить библиотеку libp11.Для этого необходимо выполнить следующие действия:
|
Общий порядок действий
Настройка pam_p11
...
Создать файл
/usr/share/pam-configs/p11
со следующим содержанием:Для версий libpam-p11 ниже 0.2.0
Code Block Name: Pam_p11 Default: yes Priority: 800 Auth-Type: Primary Auth: sufficient pam_p11_opensc.so /usr/lib/librtpkcs11ecp.so
Для версий libpam-p11 выше или равных 0.2.0
Code Block Name: Pam_p11 Default: yes Priority: 800 Auth-Type: Primary Auth: sufficient pam_p11.so /usr/lib/librtpkcs11ecp.so
Обновить конфигурацию PAM:
Code Block language bash sudo pam-auth-update
- В появившемся диалоге необходимо удостовериться, что выбран pam_p11. Если вы хотите отключить аутентификацию по паролям, то можно отключить Unix authentication.
Создание ключей на токене
- Необходимо скачать библиотеку rtpkcs11ecp по ссылке https://www.rutoken.ru/support/download/pkcs/ и установить ее в систему.
Создаем ключевую пару RSA длины 2048 бит c ID "45" (id стоит запомнить, он понадобится при создании сертификата). Аутентификация на токене происходит под сущностью пользователя.
Code Block language bash $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --keypairgen --key-type rsa:2048 -l --id 45
Проверим сгенерированный ключ:
Code Block language bash $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
Создание сертификата и импорт его на токен через OpenSSL 1.1.x
Запускаем
openssl
Code Block language bash $ openssl
Формируем самоподписанный сертификат , или заявку на сертификат:
Code Block language bash OpenSSL> engine dynamic -pre SO_PATH:/usr/lib/x86_64-linux-gnu/engines-1.1/pkcs11.so -pre ID:pkcs11 -pre LIST_ADD:1 -pre LOAD -pre MODULE_PATH:librtpkcs11ecp.so ... OpenSSL> req -engine pkcs11 -x509 -new -key 0:45 -keyform engine -out client.reqpem -subj "/C=RU/ST=Moscow/L=Moscow/O=Aktiv/OU=dev/CN=testuser/emailAddress=testuser@mail.com"
Tip Если вы используете не Ubuntu 18.04, вам необходимо проверить местонахождение pkcs11.so. Он может располагаться, например, в /usr/lib/openssl/engines/. Если его найти не удается воспользуйтесь командой find.
Tip title Примечание Если при создании сертификата в OpenSSL убрать ключ
-x509,
то на выходе получим заявку на сертификат.Создание сертификата и импорт его на токен через OpenSSL 3.x
Настраиваем конфигурационный файл по инструкции
Формируем самоподписанный сертификат или заявку на сертификат:Code Block language bash $ OPENSSL_CONF=/path/to/engine.conf openssl req -engine pkcs11 -x509 -new -key 0:45 -keyform engine -out client.pem -subj "/C=RU/ST=Moscow/L=Moscow/O=Aktiv/OU=dev/CN=testuser/emailAddress=testuser@mail.com"
Сохраняем сертификат на токен:
Code Block language bash $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -l -y cert -w ./client.pem --id 45
Занесение сертификата в список доверенных
Теперь нам необходимо
прочитать с токена сертификат с нужным ID (в нашем случае - 45) изаписать его в файл доверенных сертификатов:
Code Block language bash mkdir ~/.eid chmod 0755 ~/.eid pkcs11-tool --module -r --type cert --id 45 -l -p <PIN> > cat client.pem >> ~/.eid/authorized_certificates chmod 0644 ~/.eid/authorized_certificates
...
Warning | ||||
---|---|---|---|---|
| ||||
На стадии выбора пользователя информация о подключенном токене может не обновляться динамически. Если вы подключили токен и не видите поля ввода пинPIN-кода, вам может понадобиться перенести фокус на "гостевой сеанс" и обратно на вашего пользователя. |
...