...
Для остановки сервиса pcscd введите команду:
Panel |
---|
$ |
...
sudo |
...
service |
...
pcscd |
...
stop |
Настройка системы
Перед началом работы, установите следующие пакеты:
Panel |
---|
sudo |
...
yum |
...
install |
...
ccid |
...
opensc |
...
pam_pkcs11 |
...
gdm-plugin-smartcard |
...
p11-kit |
...
yum |
...
remove |
...
coolkey |
Загрузите модуль librtpkcs11ecp.so и установите
Panel |
---|
sudo |
...
rpm |
...
-i |
...
librtpkcs11ecp_1.9.15.0-1_x86_64.rpm |
Создание ключей и сертификатов
...
Вы можете пропустить данный раздел, если у вас уже имеются необходимые RSA ключи
Panel |
---|
pkcs11-tool |
...
--module |
...
/usr/lib64/librtpkcs11ecp.so |
...
--keypairgen |
...
--key-type |
...
rsa:2048 |
...
-l |
...
--id |
...
45 |
Теперь создайте самоподписанный сертификат:
Panel |
---|
openssl |
...
engine |
...
dynamic |
...
-pre |
...
SO_PATH:/usr/lib/x86_64-linux-gnu/engines-1.1/libpkcs11.so |
...
-pre |
...
ID:pkcs11 |
...
-pre |
...
LIST_ADD:1 |
...
-pre |
...
LOAD |
...
-pre |
...
MODULE_PATH:/usr/lib64/librtpkcs11ecp.so |
...
MODULE_PATH:/usr/lib64/librtpkcs11ecp.so |
...
req |
...
-engine |
...
pkcs11 |
...
-new |
...
-key |
...
0:45 |
...
-keyform |
...
engine |
...
-x509 |
...
-out |
...
cert.crt |
...
-outform |
...
DER |
Поместите его на токен
Panel |
---|
pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so -l -y cert -w cert.crt --id 45 |
Добавление сертификата в список доверенных
Проверьте, что токен подключен и сертификаты с ключами на нем имеются.
Добавление сертификата в список доверенных
Panel |
---|
pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so -O -l |
Создайте базу данных доверенных сертификатов
Panel |
---|
sudo mkdir /etc/pam_pkcs11/nssdb sudo chmod 0644 /etc/pam_pkcs11/nssdb sudo certutil -d /etc/pam_pkcs11/nssdb -N (создание базы данных) sudo modutil -dbdir /etc/pam_pkcs11/nssdb/ -add p11-kit-trust -libfile /usr/lib64/pkcs11/p11-kit-trust.so |
Выгрузите ваш сертификат с токена (если вы пользовались вышеописанной инструкцией для получения сертификата, то ID = 45)
Panel |
---|
pkcs11-tool --module=/usr/lib64/librtpkcs11ecp.so -l -r -y cert -d <ID> -o cert.crt |
Добавьте сертификат в доверенные
Panel |
---|
sudo cp cert.crt /etc/pki/ca-trust/source/anchors/ (команда вводится из директории, в которую был помещён сертификат) sudo update-ca-trust force-enable sudo update-ca-trust extract (может занять некоторое время) |
Настройка pam_pkcs11
Создайте (например, на рабочем столе) текстовый файл pam_pkcs11.conf со следующим содержимым:
Panel |
---|
pam_pkcs11 { nullok = false; debug = true; 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/lib64/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 = subject;
mapper_search_path = /usr/lib64/pam_pkcs11;
mapper subject { debug = true; module = internal; ignorecase = false; mapfile = file:///etc/pam_pkcs11/subject_mapping; } } Поместите файл в каталог /etc/pam_pkcs11/: cd /etc/pam_pkcs11/ sudo mv pam_pkcs11.conf pam_pkcs11.conf.default (резервное копирование) sudo mkdir cacerts crls sudo cp /home/<имя_пользователя>/Desktop/pam_pkcs11.conf /etc/pam_pkcs11/ |
Регистрация модуля для аутентификации в системе
Подключите модуль к системе авторизации PAM:
Panel |
---|
sudo vim /etc/pam.d/system-auth |
Добавьте туда строку со следующим содержимым
Panel |
---|
auth sufficient pam_pkcs11.so pkcs11_module=/usr/lib64/librtpkcs11ecp.so debug |
Сохраните файл и узнайте описание вашего сертификата с помощью следующей команды
Panel |
---|
sudo pkcs11_inspect |
На выходе вы увидите что-то такое.
Скопируйте строчку с описанием сертификата в файл /etc/pam_pkcs11/subject_mapping в формате
Вывод команды pkcs11_inspect -> <имя_пользователя>
Попробуйте аутентифицироваться
Panel |
---|
su oleg |
Вывод будет примерно следующим
Такой подробный вывод можно отключить, убрав опцию debug для pam модуля в файле конфигурации /etc/pam.d/system-auth