...
Введение
Related links
http://dev.rutoken.ru/pages/viewpage.action?pageId=3440679
https://help.ubuntu.com/community/Kerberos
https://help.ubuntu.com/10.04/serverguide/kerberos.html
По аутентификации с использованием сертификатов здесь: http://k5wiki.kerberos.org/wiki/Pkinit_configuration
Основные понятия
Key Distribution Center (KDC)
- хранилище информации о паролях пользователейAdmin server
- основной сервер kerberos. У нас KDC и admin server находятся на одной машинеRealm
- "среда", в которой производится аутентификацияPrincipal
- пользователь или сервис, участвующий в механизме аутентификации. Мы пока рассматриваем только пользователей
Стенд
две машины с Astra Linux 1.3 x64 и настроенной ALD
Важно: время на клиенте и сервере должно быть синхронизировано. Невыполнение этого требования может привести к возникновению проблем.
Блок кода |
---|
<username> = test1 <realm> = RUSBITECH.RU <server> = server.rusbitech.ru |
Клиент
Установлены стандартные пакеты для работы с токенами:
Блок кода |
---|
libopenct1_0.6.20-1.2_amd64.deb openct_0.6.20-1.2_amd64.deb opensc_0.12.2-2_amd64.deb libp11-2_0.2.8-2_amd64.deb libengine-pkcs11-openssl_0.1.8-2_amd64.deb |
Сервер и клиент
Kerberos realm: RUSBITECH.RU
, доменное имя server.rusbitech.ru
(прописано в /etc/hosts на клиенте)
Пользователи: test1@RUSBITECH.RU
Добавочно к предустановленным пакетам ald/kerberos установлен krb5-pkinit
(krb5-pkinit_1.10.1+dfsg-3_amd64.deb, Debian Wheezy):
Command |
---|
dpkg -i --force-depends krb5-pkinit_1.10.1+dfsg-3_amd64.deb |
Общий порядок действий
Проверка получения тикета пользователем на сервере
Command |
---|
|
Проверка получения тикета пользователем на клиенте, используя идентификацию по паролю
Command |
---|
|
Настрока работы с сертификатами и токеном
Сервер
Создать ключ и сертификат CA:
Command |
---|
|
Common name
указать test1
(ваш пользователь).
Создать ключ и сертификат KDC:
Command |
---|
|
Cоздание запроса
Command |
---|
openssl req -new -out kdc.req -key kdckey.pem |
Common name
указать RUSBITECH.RU
Подпись запроса
Command |
---|
export REALM=RUSBITECH.RU #Ваш домен |
# файл pkinit_extensions следует положить в тот каталог, откуда вы выполняете команды.
Command |
---|
openssl x509 -req -in kdc.req -CAkey cakey.pem -CA cacert.pem -out kdc.pem -extfile pkinit_extensions -extensions kdc_cert -CAcreateserial |
Перенести следующие файлы в /var/lib/krb5kdc/:
Блок кода |
---|
kdc.pem kdckey.pem cacert.pem |
Включить preauth на сервере.
Необходимо дополнить секцию kdcdefaults новыми параметрами из примера ниже:
Блок кода | ||
---|---|---|
| ||
[kdcdefaults] kdc_tcp_ports = 88 pkinit_identity = FILE:/var/lib/krb5kdc/kdc.pem,/var/lib/krb5kdc/kdckey.pem pkinit_anchors = FILE:/var/lib/krb5kdc/cacert.pem [realms] AKTIV-TEST = { database_name = /var/lib/krb5kdc/principal admin_keytab = FILE:/etc/krb5kdc/kadm5.keytab acl_file = /etc/krb5kdc/kadm5.acl key_stash_file = /etc/krb5kdc/stash max_life = 10h 0m 0s max_renewable_life = 7d 0h 0m 0s master_key_type = des3-hmac-sha1 supported_enctypes = aes256-cts:normal arcfour-hmac:normal des3-hmac-sha1:normal des-cbc-crc:normal des:normal des:v4 des:norealm des:onlyrealm des:afs3 default_principal_flags = +preauth } |
Включить preauth для пользователя
Command | ||
---|---|---|
| ||
|
Клиент
Создать каталог /etc/krb5/
CA (cacert.pem)
c сервера в /etc/krb5/ на клиентеОтформатировать токен
Command |
---|
|
Сгенерировать ключевую пару и заявку на сертификат на токене
# не забываем про ID!
Command |
---|
pkcs15-init -G rsa/2048 --auth-id 02 --id 42 --label "testuser's key" --public-key-label "testuser's public key" |
# ...
Command |
---|
|
Должен появится следующий вывод:
Блок кода |
---|
(dynamic) Dynamic engine loading support [Success]: SO_PATH:/usr/lib/openssl/engines/engine_pkcs11.so [Success]: ID:pkcs11 [Success]: LIST_ADD:1 [Success]: LOAD [Success]: MODULE_PATH:opensc-pkcs11.so Loaded: (pkcs11) pkcs11 engine |
Command |
---|
|
Должен появится следующий вывод:
Блок кода |
---|
engine "pkcs11" set. PKCS#11 token PIN: |
Command |
---|
OpenSSL> quit |
Сервер
Скопировать с клиента заявку (client.req) и подписать ее ключом CA:
Command |
---|
|
Перезапустить сервер и kdc:
Command |
---|
|
Клиент
Вернуть сертификат клиента (client.pem) и положить его в /etc/krb5/ <
Также записать его на токен
Command |
---|
pkcs15-init --store-certificate client.pem --auth-id 02 --id 42 --format pem |
client.pem
должен быть подписан на сервере!
Настроить kerberos
Блок кода | ||
---|---|---|
| ||
[libdefaults] default_realm = RUSBITECH.RU pkinit_anchors = FILE:/etc/krb5/cacert.pem # для аутентификации по локальному ключу # pkinit_identities = FILE:/etc/krb5/client.pem,/etc/krb5/clientkey.pem # для аутентификации по токену pkinit_identities = PKCS11:/usr/lib/x86_64-linux-gnu/opensc-pkcs11.so |
Проверить как оно все работает
Command |
---|
|