Table of Contents | ||||
---|---|---|---|---|
|
Введение
В данной инструкции описывается, как заставить модуль pam_p11
работать с библиотекой librtpkcs11ecp.so
. Дополнительную информацию по данному вопросе можно найти в следующей статье http://habrahabr.ru/company/aktiv-company/blog/144700/.
Проверка модели устройства
- Подключите USB-токен к компьютеру.
- Для определения названия модели USB-токена откройте Терминал и введите команду:
$ lsusb
В результате в окне Терминала отобразится название модели USB-токена:
Убедитесь, что используете: Aktiv Rutoken ECP
Стенд
Нам понадобится Rutoken ECPРутокен ЭЦП, отформатированный через Панель управления Рутокен. В качестве дистрибутива использовалась Ubuntu-12.10-desktop-i386.
Общий порядок действий
1. Устанавливаем необходимые пакеты:
...
При установке opensc
также устанавливаются пакеты libccid
и pcscd
, а при установке libpam-p11
– пакет libp11-2
.
2. Устанавливаем библиотеку PKCS#11 Рутокен, предварительно загрузив установочный пакет с сайта rutoken.ru.
3. Создаем файл описания модуля PKCS#11
Code Block | ||
---|---|---|
| ||
$ sudo nano /usr/share/p11-kit/modules/Rutoken.module |
добавляем в редакторе строку:
module:. Библиотеку librtpkcs11ecp.so
помещаем в директорию/usr/lib/librtpkcs11ecp.so
и сохраняем файл.
34. Аналогично действиям в приведенной выше статье создаем файл /usr/share/pam-configs/p11
, с единственным отличием – укажем путь к нашей библиотеке:
Code Block | ||
---|---|---|
| ||
Name: Pam_p11 Default: yes Priority: 800 Auth-Type: Primary Auth: sufficient pam_p11_opensc.so /usr/lib/librtpkcs11ecp.so |
45. Выполняем команду:
Code Block | ||
---|---|---|
| ||
$ sudo pam-auth-update |
В появившемся диалоге выбираем Pam_p11
.
Note | ||
---|---|---|
| ||
Если вы желаете использовать сертификат RSA, который уже записан на ваш токен/смарт-карту, то на данном этапе перейдите к указаниям в приложении к данной инструкции (в самом низу данной страницы). |
65. Переходим к созданию ключевой пары:
...
Параметры, задаваемые в этой строке:
--module <arg> | путь к библиотеке pkcs11 (обязательный параметр) |
| генерация ключевой пары |
-- key-type <arg> | задает тип и длину ключа. В нашем случае тип – rsa, длина - 2048 бит (с длиной ключа 1024 бит возникают проблемы) |
-l | запрос PIN-кода токена до каких-либо операций с ним (обязательный параметр) |
--id <arg> | определяет id создаваемого объекта (понадобится при создании сертификата) |
67. Переходим к созданию сертификата.
...
Code Block | ||
---|---|---|
| ||
$ openssl OpenSSL> engine dynamic -pre SO_PATH:/usr/lib/x86_64-linux-gnu/engines-1.1/engine_pkcs11.so -pre ID:pkcs11 -pre LIST_ADD:1 -pre LOAD -pre MODULE_PATH:/usr/lib/librtpkcs11ecp.so |
78. Создаем сертификат в PEM-формате:
Code Block | ||
---|---|---|
| ||
OpenSSL> req -engine pkcs11 -new -key 0:45 -keyform engine -x509 -out cert.pem -text |
Здесь:
-key | указывает закрытый ключ (в нашем случае 0:45 – слот:ID ключа) |
| выдает самоподписанный сертификат |
89. Конвертируем сертификат PEM в CRT:
Code Block | ||
---|---|---|
| ||
OpenSSL> x509 -in cert.pem -out cert.crt -outform DER |
910. Закрываем openssl.
Теперь сохраняем сертификат CRT на Рутокен:
Code Block | ||
---|---|---|
| ||
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -l -y cert -w cert.crt --id 45 |
Здесь:
-y <arg> | тип объекта (может быть cert, privkey, pubkey, data) |
| записать объект на токен |
1011. Остается только добавить сертификат PEM в список доверенных:
Code Block | ||
---|---|---|
| ||
$ mkdir ~/.eid $ chmod 0755 ~/.eid $ less ~/cert.pem >> ~/.eid/authorized_certificates $ chmod 0644 ~/.eid/authorized_certificates |
1112. На этом настройка закончена. После перезапуска ОС окно входа в систему будет выглядеть так:
Приложение: настройка аутентификации с имеющимся сертификатом
Если у вас уже имеется выписанная на токен ключевая пара RSA с привязанным к ней сертификатом, то вы можете использовать их для аутентификации в Ubuntu.
Рекомендуемая длина ключа RSA - не ниже 2048 бит.
- Выполните пп.1-4 основной инструкции.
Необходимо узнать ID сертификата, записанного на токен.
Code Block language bash pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
Добавим сертификат в список доверенных:
Code Block $ mkdir ~/.eid $ chmod 0755 ~/.eid $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --type cert -r --id ID_вашего_сертификата | openssl x509 -inform der >> ~/.eid/authorized_certificates $ chmod 0644 ~/.eid/authorized_certificates
- Выполните перезагрузку.