Product SiteDocumentation Site

⁠Глава 3. Установка сервера FreeIPA в режиме CA-less

3.1. Подготовка сертификатов для сервера FreeIPA
3.2. Экспорт сертификатов в правильные форматы
3.3. Установка FreeIPA в режиме CA-less
В этом разделе описывается установка сервера FreeIPA без встроенного центра сертификации (CA-less).
Конфигурация без CA требуется в тех случаях, когда по какой-либо причине нет возможности развернуть на FreeIPA встроенный PKI-сервис Dogtag.
Для установки в режиме CA-less необходимо предоставить следующие сертификаты:
  • сертификат и приватный ключ сервера Directory Server:
    • --dirsrv-cert-file — путь к одному или нескольким файлам, содержащим:
      • сертификат сервера Directory Server;
      • опционально — часть или полную цепочку сертификатов CA;
      • приватный ключ (если используется формат PKCS#12 или PKCS#8);
    • --dirsrv-pin — пароль для доступа к приватному ключу (требуется только для PKCS#12);
  • сертификат и приватный ключ веб-сервера Apache:
    • --http-cert-file —путь к одному или нескольким файлам, содержащим:
      • сертификат сервера Apache;
      • опционально — часть или полную цепочку сертификатов CA;
      • приватный ключ (если используется формат PKCS#12 или PKCS#8);
    • --http-pin — пароль для доступа к приватному ключу (требуется только для PKCS#12);
  • Сертификат центра сертификации (CA):
    • --ca-cert-file — путь к одному или нескольким файлам в формате PEM, содержащим сертификат(ы) CA, выдавшего сертификаты для:
      • сервера Directory Server;
      • веб-сервера Apache;
      • (опционально) Kerberos KDC (если используется PKINIT).

      Примечание

      Этот параметр необязателен, если полная цепочка CA уже включена в файлы, указанные через --dirsrv-cert-file и --http-cert-file.
      Однако в большинстве случаев корневой сертификат CA не входит в PKCS#12-архив серверного сертификата, поэтому его необходимо передать отдельно через --ca-cert-file.
  • сертификат и приватный ключ для PKINIT (опционально):
    • --pkinit-cert-file — путь к файлу сертификата;
    • --pkinit-pin — пароль для доступа к приватному ключу;;
    • --no-pkinit — отключает настройку PKINIT. Если сертификат PKINIT не предоставлен, FreeIPA настроит KDC без поддержки PKINIT.
Параметры --dirsrv-cert-file и --http-cert-file можно указывать несколько раз, чтобы передать отдельные файлы (например, сертификат, ключ и промежуточный CA).
Комбинация файлов, переданных через --dirsrv-cert-file, --http-cert-file и --ca-cert-file, должна содержать полную цепочку сертификатов от серверного сертификата до корневого CA, включительно. Без этого установка завершится ошибкой.

⁠3.1. Подготовка сертификатов для сервера FreeIPA

Предупреждение

Перед генерацией сертификатов необходимо убедиться, что следующая команда возвращает полное доменное имя (FQDN) сервера FreeIPA:
# echo $HOSTNAME
ipa.example.test
Создать каталог для сертификатов:
# mkdir ~/test_ca
Создать файл password.txt с паролем к закрытому ключу (длина пароля должна быть не меньше 8 символов):
# echo "SECret.123" > ~/test_ca/password.txt
Инициализировать базу данных NSS:
# certutil -d ~/test_ca -N -f ~/test_ca/password.txt
Создать файл с энтропией:
# head -c20 /dev/random > ~/test_ca/noise.txt
Выполнить экспорт переменной CERT_SERIAL:
# export CERT_SERIAL=1
Создать корневой сертификат CA:
# SKID="0x`openssl rand -hex 20`"
# echo $SKID
0xfa012b30b9407b0750b786ff5ed9f49ce3998622
# certutil -d ~/test_ca -S -n "CA" -s "CN=Certificate Authority" -x -t CT,,C -1 -2 -5 -m $CERT_SERIAL -v 120 -z ~/test_ca/noise.txt -f ~/test_ca/password.txt --extSKID
В ответ на запросы команды дать следующие ответы (на запрос «Enter value for the key identifier fields», следует ввести вывод команды echo $SKID):
  0 - Digital Signature
  1 - Non-repudiation
  5 - Cert signing key
  9 - done
  Is this a critical extension [y/N]? y
  Is this a CA certificate [y/N]?  y
  Enter the path length constraint, enter to skip [<0 for unlimited path] 0
  Is this a critical extension [y/N]? y
  Enter value for the key identifier fields,enter to omit: 0xfa012b30b9407b0750b786ff5ed9f49ce3998622
  Is this a critical extension [y/N]? n
  5 - SSL CA
  6 - S/MIME CA
  7 - Object Signing CA
  9 - done
  Is this a critical extension [y/N]? n
Создать noise файл, заполненный случайными числами:
# head -c20 /dev/random > ~/test_ca/noise.txt
Создать запрос на сертификат (на запрос «Enter value for the key identifier fields», следует ввести вывод команды echo $SKID):
# SKID="0x`openssl rand -hex 20`"
# echo $SKID
0xb17caf72b46288bcc9c887c89894dc917e06f724
# certutil -d ~/test_ca -R -s CN=$HOSTNAME,O=IPA -o /tmp/servercert.req -k rsa -g 2048 -z ~/test_ca/noise.txt -f ~/test_ca/password.txt -a --extSKID --extSAN dns:ipa.example.test
Generating key.  This may take a few moments...

Adding Subject Key ID extension.
Enter value for the key identifier fields,enter to omit:
0xb17caf72b46288bcc9c887c89894dc917e06f724
Is this a critical extension [y/N]?
n
Подписать запрос на сертификат:
# export CERT_SERIAL=$(($CERT_SERIAL + 1))
# certutil -d ~/test_ca -C -c "CA" -i /tmp/servercert.req -o /tmp/servercert.pem -m $CERT_SERIAL -v 120 -f ~/test_ca/password.txt -1 -5 -8 ipa.example.test -a

Примечание

Опция -8 указывает certutil добавить расширение Subject Alternative Name (SAN) в сертификат.
Это расширение должно содержать полное доменное имя (FQDN) сервера FreeIPA (например, ipa.example.test), так как современные службы (включая Apache и Directory Server) требуют, чтобы имя хоста присутствовало в SAN, а не только в поле Subject DN.
Если расширение SAN отсутствует, команда ipa-server-install завершится ошибкой:
The server certificate in /root/test_ca/servercert.p12 is not valid: invalid for server ipa.example.test
поскольку сертификат будет считаться недействительным для указанного имени хоста.
В ответ на запросы команды дать следующие ответы:
  0 - Digital Signature
  2 - Key encipherment
  9 - done
  Is this a critical extension [y/N]? n
  1 - SSL Server
  9 - done
  Is this a critical extension [y/N]? n

Примечание

Для эксплуатации в рабочей среде рекомендуется использовать отдельные сертификаты для Directory Server и Apache.