Сценарий применения
Первый контроллер домена FreeIPA инициализируется с помощью инструмента astra-freeipa-server с использованием автоматического выпуска самоподписанного корневого сертификата и без использования центра авторизации DogTag.
С точки зрения работы схемы репликации FreeIPA все серверы-реплики равноравны, однако с точки зрения установки и развертывания FreeIPA выделяется первый сервер, на котором создаются ключ и сертификат удостоверяющего центра. Далее этот сервер (контроллер) условно называется "первый".На первом контролере при инициализации без использования DogTag в каталоге /etc/ssl/freeipa автоматически создаются файлы:
- /etc/ssl/freeipa/ca.key - закрытый ключ удостоверяющего центра;
- /etc/ssl/freeipa/ca.crt - сертификат закрытого ключа удостоверяющего центра;
- /etc/ssl/freeipa/server.key - закрытый ключ сервера;
- /etc/ssl/freeipa/server.crt - сертификат закрытого ключа сервера;
При добавлении сервера-реплики:
Пользователь-администратор на сервере-реплике выполняет настройки параметров хоста (IP-адрес, адрес сервера DNS, hostname) и установку пакетов. В том числе на сервере - реплике запускается служба SSH:
sudo systemctl enable --now ssh- Пользователь-администратор на сервере-реплике выполняет ввод сервера в домен;
Для выпуска сертификатов следующих устанавливаемых контроллеров-реплик используется инструмент astra-freeipa-server-crt. Пример команды, выполняемой на основном сервере:
sudo astra-freeipa-server-crt --host replica1.ipadomain.ru --export --push localadm@192.168.32.1 --pin 12345где:
--host - полное доменное имя нового сервера-реплики;
--export - указание выгрузить контейнер закрытого ключа и сертификата в файл-контейнер в формате pksc12;
--push - указание скопировать контейнер pkcs12 на сервер, где будет выполняться установка, в домашний каталог пользователя localadm (в общем случае это пользователь-администратор, заданный при установке системы) в файл с именем replica1.ipadomain.ru.p12 (в качестве имени используется полное доменное имя целевого сервера с расширением .p12);
--pin - пароль к создаваемому контейнеру;Установка FreeIPA на сервере-реплике выполняется пользователем-администратором, из его домашнего каталога, в который на предыдущем шаге скопирован контейнер pksc12. Команда:
sudo astra-freeipa-replica -a replica1.ipadomain.ru.p12 --pin 12345
По мере необходимости (напр. истечение срока действия сертификатов) выпуск новых сертификатов и отправка их на серверы-реплики выполняется командой:
sudo astra-freeipa-server-crt --host replica1.ipadomain.ru --push adminгде
--host - полное доменное имя сервера-реплики;
--push - указание автоматически установить выпущенный сертификат на сервере реплике, действуя от имени пользователя admin (имя администратора домена "по умолчанию").
Новые сертификаты следует выпускать с использованием ранее выпущенного закрытого ключа сервера. По умолчанию для новых серверов файлы с новыми ключами создаются с именем, совпадающим с именем сервера, и они же используются для создания новых сертификатов. Исключением является первый сервер, ключ которого лежит в файле /etc/ssl/freeipa/server.key. Для того, чтобы использовать ключ первого сервера при обновлении сертификатов этого сервера следует:Использовать опцию --sekey, позволяющую явно указать используемый ключ, например:
sudo astra-freeipa-server-crt --host `hostname` --sekey /etc/ssl/freeipa/server.keyПеред выпуском сертификата создать создать копию ключа в файле с нужным именем, например:
sudo ln -s /etc/ssl/freeipa/server.key /etc/ssl/freeipa/`hostname`.key
Справка по программе
astra-freeipa-server-crt --help Выпуск сертификата для сервера FreeIPA. Вызов: astra-freeipa-server-crt [--host FQDN] [--cacrt FILE.CRT] [--cakey FILE.KEY] [--sekey FQDN.KEY] [--help] Если будет создан новый закрытый ключ сервера он будет размещён в файле "FQDN.key". Созданный закрытый ключ будет далее использоваться для выпуска и перевыпуска всех сертификатов. !!! Замена закрытых ключей данным сценарием не поддерживается !!! Выпущенный сертификат будет размещен в файле "FQDN-TIMESTAMP.crt" в каталоге для размещения сертификатов. Экспортированный в контейнер сертификат будет размещен в файле "FQDN-TIMESTAMP.p12" в каталоге для размещения сертификатов. Сертификаты могут быть скопированы на удалённую машину и зарегистрированы там в БД сертификатов.. В качестве TIMESTAMP используются текущие дата и время в формате: "%y%m%d-%H%M%S" (см. справку man date). !!! Для формирования TIMESTAMP используется всемирное координированное время (UTC). TIMESTAMP изменяется при каждом запуске !!! Ключ и сертификат выпускаются со следующими фиксированными параметрами: Алгоритм и длина закрытого ключа rsa:2048 (см. man openssl). Срок действия сертификата: 3650 Опции: --certdir DIR - Имя каталога для поиска ключа и сертификата удостоверяющего центра, и для размещения создаваемых сертификатов. Если каталог не существует - он будет создан. Выбрано имя "/etc/ssl/freeipa". --host FQDN - Полное доменное имя (FQDN) сервера, для которого выпускается сертификат. Выбрано имя "ipa0.ipadomain0.ru". Если имя не задано - используется hostname текущего сервера. --cacrt FILE - Имя файла с существующим сертификатом удостоверяющего центра. Выбрано имя "/etc/ssl/freeipa/ca.crt". --cakey FILE - Имя файла с существующим закрытым ключом удостоверяющего центра. Выбрано имя "/etc/ssl/freeipa/ca.key". --sekey FILE - Имя файла с закрытым ключом сервера. Если файл не существует - будет создан новый закрытый ключ. Если имя не задано - ключ будет размещен в файле с именем "FQDN.key" в каталоге для размещения сертификатов. Выбрано имя "/etc/ssl/freeipa/ipa0.ipadomain0.ru.key". --sekey_parm ALG - Алгоритм и длина закрытого ключа сервера. Выбрано значение "rsa:2048" (см. man openssl). --secrt_days NUM - Срок действия выпускаемого сертификата, дней. Выбрано значение "3650" (см. man openssl). --export - Экспортировать сертификат в контейнер формата pkcs12 для установки нового сервера (новой реплики) FreeIPA. Экспорт будет выполнен в файл "/etc/ssl/freeipa/ipa0.ipadomain0.ru-200320-082415.p12". Не требуется для обновления сертификата уже установленного сервера. --pin PIN - Пароль ("пин") для экспорта сертификата. Чтобы задать пустой пароль укажите пробел в кавычках: --pin " " Если никакой пароль не задан - он будет запрошен. --push ADMIN - Попытаться скопировать через ssh/scp созданные файлы на сервер, указанный в параметре --host, и зарегистрировать их. В параметре ADMIN можно задать не только имя пользователя, но и адрес целевого сервера, например: "admin@192.168.32.11". Все действия будут выполняться от имени "admin". Все файлы будут копироваться в домашний каталог этого пользователя. Если выполнялся экспорт сертификата для нового сервера (новой реплики), сертификат будет скопирован в файл с именем "ipa0.ipadomain0.ru.p12". Если создавался новый сертификат для существующего сервера, то: - Копия этого сертификата будет скопирована в файл с именем "ipa0.ipadomain0.ru.crt"; - Будет сделана попытка зарегистрировать его в БД сертификатов "/etc/apache2/nssdb". !!! После регистрации нового сертификата в БД сертификатов службы FreeIPA должны быть перезапущены вручную !!! -y - Выполнять действия без запроса подтверждения. --help | -h - Вывести эту подсказку. Никакие реальные действия выпоняться не будут. Если этот ключ указан не первым, то в подсказке будут выведены значения, установленные предшествующими ключами.