Table of Contents | ||||
---|---|---|---|---|
|
Введение
В данной инструкции описывается, как заставить модуль pam_p11
работать с библиотекой librtpkcs11ecp.so
. Дополнительную информацию о данном по данному вопросе можно почерпнуть из найти в следующей статьи статье http://habrahabr.ru/company/aktiv-company/blog/144700/.
Стенд
Итак, нам Нам понадобится Rutoken ECP, отформатированный через Панель управления Рутокен. В качестве дистрибутива использовалась Ubuntu-12.10-desktop-i386.
Общий порядок действий
1) Первым делом устанавливаем . Устанавливаем необходимые пакеты:
...
Code Block | ||
---|---|---|
| ||
$ sudo apt-get install |
...
opensc libpam-p11 libengine-pkcs11-openssl |
...
При Стоит отметить, что при установке opensc
также устанавливаются пакеты libccid
и pcscd
, а при установке libpam-p11
– пакет libp11-2
.
2) . Библиотеку librtpkcs11ecp.so
помещаем в директорию /usr/lib/
.
3) . Аналогично действиям в приведенной выше статье создаем файл /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 |
4) . Выполняем команду:
Code Block | ||
---|---|---|
| ||
$ sudo pam-auth-update |
В появившемся диалоге выбираем Pam_p11
.
5) . Переходим к созданию ключевой пары:
Code Block | ||
---|---|---|
| ||
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --keypairgen --key-type rsa: |
...
2048 -l --id 45 |
Утилита pkcs11-tool
входит в состав opensc
.
Параметры, задаваемые в этой строке:
--module <arg> |
...
путь к библиотеке pkcs11 (обязательный параметр) |
...
|
...
генерация ключевой пары | |
-- key-type <arg> |
...
задает тип и длину ключа. В нашем случае тип – rsa, длина - 2048 бит (с длиной ключа 1024 бит возникают проблемы) |
...
-l |
...
запрос |
...
PIN-кода токена |
...
до каких-либо операций с ним (обязательный параметр) |
...
--id <arg> |
...
определяет id создаваемого объекта (понадобится при создании сертификата) |
...
6) . Переходим к созданию сертификата.
Запускаем openssl
и подгружаем модуль поддержки pkcs11:
Code Block | ||
---|---|---|
| ||
$ openssl |
...
OpenSSL> engine dynamic -pre SO_PATH:/usr/lib/engines/engine_pkcs11.so -pre ID:pkcs11 -pre LIST_ADD:1 -pre LOAD -pre MODULE_PATH:/usr/lib/librtpkcs11ecp.so |
7) . Создаем сертификат в PEM-формате: OpenSSL> req
Code Block | ||
---|---|---|
| ||
OpenSSL> req -engine pkcs11 -new -key 0:45 -keyform engine -x509 -out cert.pem |
...
-text |
Здесь:
-key |
...
указывает закрытый ключ (в нашем случае 0:45 – слот:ID ключа) |
...
|
...
| выдает самоподписанный сертификат |
...
8) Сконвертируем . Конвертируем сертификат PEM в CRT:
Code Block | ||
---|---|---|
| ||
OpenSSL> x509 -in cert.pem -out cert.crt -outform DER |
...
9) . Закрываем 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) |
...
|
...
записать объект на токен |
...
10) . Остается только добавить сертификат PEM в список доверенных.:
Code Block | ||
---|---|---|
| ||
$ mkdir ~/.eid |
...
$ chmod 0755 ~/.eid |
...
$ less ~/cert.pem >> ~/.eid/authorized_certificates |
...
$ chmod 0644 ~/.eid/authorized_certificates |
11. На этом настройка закончена. После перезапуска ОС окно входа в систему будет выглядеть так: