Table of Contents | ||||
---|---|---|---|---|
|
Tip |
---|
Подключите Рутокен ЭЦП 2.0 к компьютеру |
Проверка работы Рутокен ЭЦП 2.0
- Подключите Рутокен ЭЦП 2.0 к компьютеру.
- Убедитесь в том, что на USB-токене или считывателе для смарт-карт светится индикатор.
- Откройте Terminal.
- Для проверки корректности работы Рутокен ЭЦП 2.0 введите команду:
$ pcsc_scan - Нажмите на клавишу [ENTER].
- Если Рутокен ЭЦП 2.0 не работает, то в окне терминала отобразится сообщение об этом.
- Если Рутокен ЭЦП 2.0 работает, то в окне терминала отобразится сообщение об этом.
Такое сообщение в системе ALT Linux выглядит следующим образом: - Для остановки сервиса pcscd введите команду:
$ sudo service pcscd stop - Нажмите на клавишу [ENTER].
Аутентификация в CentOS 7 и Goslinux при помощи RSA ключей
Настройка системы
Перед началом работы, установите следующие пакеты:
...
sudo
...
yum
...
install
...
ccid
...
opensc
...
pam_pkcs11
...
gdm-plugin-smartcard
...
p11-kit
...
sudo
...
yum
...
remove
...
coolkey
Загрузите модуль librtpkcs11ecp.so из Комплекта разработчика и поместите его в директорию /usr/lib64 отсюда https://www.rutoken.ru/support/download/pkcs/ и установите
sudo rpm -i librtpkcs11ecp_1.9.15.0-1_x86_64.rpm
Создание ключей и сертификатов
Для начала установите engine_pkcs11.so для того чтобы openssl смог общаться с токеном. Для этого соберите библиотеку libp11 из репозитория репоизиторя https://github.com/OpenSC/libp11/tree/libp11-0.4.10 . Вместе с ней идет engine_pkcs11.so начиная с версии 0.4
Вы можете пропустить данный раздел, если у вас уже имеются необходимые RSA ключи:
...
pkcs11-tool
...
--module
...
/usr/lib64/librtpkcs11ecp.so
...
--keypairgen
...
--key-type
...
rsa:2048
...
-l
...
--id
...
45
Теперь создайте самоподписанный сертификат:сертификат
...
openssl
...
OpenSSL>
...
engine
...
dynamic
...
-pre
...
...
...
...
-pre
...
ID:pkcs11
...
-pre
...
LIST_ADD:1
...
-pre
...
LOAD
...
-pre
...
MODULE_PATH:/usr/lib64/librtpkcs11ecp.so MODULE_PATH:/usr/lib64/librtpkcs11ecp.so
...
OpenSSL>
...
req
...
-engine
...
pkcs11
...
-new
...
-key
...
0:45
...
-keyform
...
engine
...
-x509
...
-out
...
cert.crt
...
-outform
...
DER
Поместите его на Рутокен ЭЦП 2.0:
...
токен
pkcs11-tool |
...
--module |
...
/usr/lib64/librtpkcs11ecp.so |
...
-l |
...
-y |
...
cert |
...
-w |
...
cert.crt |
...
--id |
...
45 |
Добавление сертификата в список доверенных
Проверьте, что Рутокен ЭЦП 2.0 токен подключен и сертификаты с ключами на нем имеются:
...
pkcs11-tool
...
--module
...
/usr/lib64/librtpkcs11ecp.so
...
-O
...
-l
Создайте базу данных доверенных сертификатов:
...
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)
pkcs11-tool
...
--module=/usr/lib64/librtpkcs11ecp.so
...
-l
...
-r
...
-y
...
cert
...
-d
...
<ID>
...
-o
...
cert.crt
Добавьте сертификат в доверенные:
...
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 со следующим содержимым:
...
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:
...
sudo
...
vim
...
/etc/pam.d/system-auth
Добавьте туда строку со следующим содержимым:
...
auth
...
...
sufficient
...
...
pkcs11_module=/usr/lib64/librtpkcs11ecp.so
...
debug
Сохраните файл и узнайте описание вашего сертификата с помощью следующей команды:
...
sudo
...
pkcs11_inspect
На выходе вы увидите сообщение:что-то такое.
Скопируйте строчку с описанием сертификата в файл /etc/pam_pkcs11/subject_mapping в формате
Вывод команды pkcs11_inspect -> <имя_пользователя>
Попробуйте аутентифицироваться:аутентифицироваться
...
su
...
oleg
Вывод будет примерно следующим:следующим
Такой подробный вывод можно отключить, убрав опцию debug для pam модуля в файле конфигурации /etc/pam.d/system-auth
Аутентификация в CentOS 7 и Goslinux при помощи ГОСТ ключей
Перед началом работы, установите следующие пакеты:
Code Block |
---|
sudo yum install ccid opensc pam_pkcs11 gdm-plugin-smartcard p11-kit
sudo yum remove coolkey |
Проверьте, что у вас установлен openssl версии 1.1 и выше
Скачайте pam модуль и положите его по адресу /usr/lib64/securty (или /lib64/security для goslinux) https://download.rutoken.ru/Rutoken/PAM/1.0.0/x86_64/librtpam.so.1.0.0
Установите права доступа:
Code Block |
---|
sudo chmod 644 /usr/lib/x86_64-linux-gnu/librtpam.so.1.0.0 |
Загружаем библиотеку через браузер.
https://www.rutoken.ru/support/download/pkcs/
Проверяем, что все настроили правильно:
Code Block |
---|
pkcs11-tool --module /usr/lib64//librtpkcs11ecp.so -T |
Далее потребуется скачать сертификат с Рутокена, если его нет, то генерируем его согласно следующему пункту
Генерация сертификата и отправка его на Рутокен
Warning |
---|
Собирайте OpenSC новее чем 0.19.0 |
https://github.com/OpenSC/OpenSC/
Создаем ключи на Рутокене:
Code Block |
---|
pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so --keypairgen --key-type GOSTR3410-2012-256:B -l --id 45 |
Узнайте где находится файл с конфигурацией и папка с энджинами openssl с помощью команды:
Code Block |
---|
openssl version -a |
Скачайте rtengine, который можно найти в комплекте разработчика ( https://www.rutoken.ru/developers/sdk/ ) и поместите его в директорию энджинов
Зайдите в файл конфигурации openssl.cnf и впишите туда следующее:
...
/
...
Регистрация сертификата в системе
Скачиваем сертификат с Рутокена:
Code Block |
---|
pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt |
Конвертируем его в PEM формат:
Code Block |
---|
openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM |
Добавляем сертификат в список доверенных сертификатов для данного пользователя:
Code Block |
---|
mkdir ~/.eid
chmod 0755 ~/.eid
cat cert.pem >> ~/.eid/authorized_certificates
chmod 0644 ~/.eid/authorized_certificates |
Настройка аутентификации
Открываем файл /etc/pam.d/system-auth:
Code Block |
---|
sudo vim /etc/pam.d/system-auth |
И записываем в самом начале следующую строчку:
Code Block |
---|
auth sufficient librtpam.so.1.0.0 /usr/lib64/x86_64-linux-gnu/librtpkcs11ecp.so |
Пробуем пройти аутентификацию:
Code Block |
---|
su oleg |
Если все прошло успешно, то появится просьба ввести пароль от токена, иначе что-то пошло не так.
Узнать причину того, что пошло не так, можно через логи в /var/log/messages