Предварительная настройкаЕсли вы планируете использовать смарт-карту Рутокен семейства ЭЦП, то в хост-машине необходимо в настройках роли добавить слой 18.layer.smartcards.sfs
Проверка модели устройства
Подключите Рутокен к компьютеру.
Для определения названия модели откройте Терминал и введите команду:
В результате в окне Терминала отобразится название модели Рутокена:
Убедитесь в том, что используете: Aktiv Rutoken ECP.
Создание ключей на Рутокене
Необходимо скачать библиотеку rtpkcs11ecp по ссылке https://www.rutoken.ru/support/download/pkcs/ и установить ее в ОС командой:
sudo dpkg -i librtpkcs11ecp-X.X.X.X-X.x86_64.deb
|
Создаем ключевую пару RSA длины 2048 бит c id "45" (его стоит запомнить, он понадобится при создании сертификата).
pkcs11-tool --module /usr/lib/librtpkcs11ecp .so --keypairgen --key- type rsa:2048 -l -- id 45
|
Проверим сгенерированный ключ:
pkcs11-tool --module /usr/lib/librtpkcs11ecp .so -O
|
Создание сертификата и импорт его на Рутокен через OpenSSL 1.1.x
Запускаем 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
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"
|
Сохраняем сертификат на Рутокене:
pkcs11-tool --module /usr/lib/librtpkcs11ecp .so -l -y cert -w . /client .pem -- id 45
|
Занесение сертификата в список доверенных
Записываем сертификат в список доверенных сертификатов:
mkdir ~/.eid
chmod 0755 ~/.eid
cat client.pem >> ~/.eid /authorized_certificates
chmod 0644 ~/.eid /authorized_certificates
|
Настройка pam_pkcs11
Создайте (например, на рабочем столе) текстовый файл pam_pkcs11.conf со следующим содержимым:
pam_pkcs11 {
nullok = false ;
debug = false ;
use_first_pass = false ;
use_authtok = false ;
card_only = false ;
wait_for_card = false ;
use_pkcs11_module = rutokenecp;
# Aktiv Rutoken ECP
pkcs11_module rutokenecp {
module = /usr/lib/librtpkcs11ecp.so;
slot_num = 0 ;
support_thread = true ;
ca_dir = /etc/pam_pkcs11/cacerts;
crl_dir = /etc/pam_pkcs11/crls;
cert_policy = signature;
}
use_mappers = digest;
mapper_search_path = /usr/lib/pam_pkcs11;
mapper digest {
debug = false ;
module = internal;
algorithm = "sha1" ;
mapfile = file:
}
}
|
Поместите файл в каталог /etc/pam_pkcs11/:
cd /etc/pam_pkcs11/
sudo mv pam_pkcs11.conf pam_pkcs11.conf. default #резервное копирование
sudo mkdir cacerts crls
sudo cp /path/to/your/pam_pkcs11.conf /etc/pam_pkcs11/
|
Настройка Digest Mapping
Узнайте поля вашего сертификата с помощью следующей команды:
В результате отобразится сообщение:
sudo pkcs11_inspect PIN for token: Printing data for mapper digest: CB:13:CA:34:AC:04:CD:BF:A6:17:29:2F:C8:00:6A:D5:54:B8:0B:BB
|
Скопируйте строчку с описанием сертификата в файл /etc/pam_pkcs11/digest_mapping в формате:
<вывод команды pkcs11_inspect> -> <имя_пользователя>
|
Пример заполнения файла:
sudo cat /etc/pam_pkcs11/digest_mapping CB:13:CA:34:AC:04:CD:BF:A6:17:29:2F:C8:00:6A:D5:54:B8:0B:BB -> user
|
Попробуйте аутентифицироваться:
Терминал должен запросить PIN код рутокена:
В окне экрана приветствия аналогично: