Вопрос или проблема
При подписании CSR, который включает атрибут SAN IP, возвращается следующее:
ОШИБКА: недопустимый 'csr': IP-адрес в subjectAltName (x.x.x.x) недоступен из DNS-имен
FreeIPA установлена в контейнере Docker с IP-адресом 10.88.x.x, который я не использую для остальных сетей. Я использую несколько сетей /24 /25 /26 для OpenStack, каждый арендатор – отдельный.
Есть ли изменение конфигурации для FreeIPA, чтобы принимать другие сети?
Я использую 10, 172 и 192 в своей сети.
Шаг 1: Изменение конфигурации FreeIPA
Доступ к серверу FreeIPA:
Войдите на ваш сервер FreeIPA или контейнер Docker, где запущена FreeIPA.
Редактирование файла ipa.conf:
Откройте файл конфигурации FreeIPA для редактирования:
vi /etc/ipa/default.conf
Добавьте следующие строки, чтобы отключить проверку IP-адресов для SAN:
ini
Копировать
[global]
disable_ip_san_check = True
Сохраните и закройте файл.
Перезапустите службы FreeIPA:
Перезапустите службы FreeIPA, чтобы применить изменения:
systemctl restart ipa
Шаг 2: Генерация CSR с SAN
Если вы еще не сгенерировали CSR с необходимыми полями SAN, вы можете использовать следующую команду OpenSSL:
openssl req -new -newkey rsa:2048 -nodes -keyout private.key -out csr.pem -subj "/CN=your-common-name" -addext "subjectAltName=IP:10.x.x.x,IP:172.x.x.x,IP:192.x.x.x"
Замените 10.x.x.x, 172.x.x.x и 192.x.x.x на фактические IP-адреса, которые вы хотите включить в SAN.
Шаг 3: Отправка CSR в FreeIPA
Используйте команду ipa cert-request:
Отправьте CSR в FreeIPA, используя команду ipa cert-request:
ipa cert-request csr.pem --add --principal=host/your-hostname@YOUR-REALM
Замените your-hostname и YOUR-REALM на соответствующие значения.
Проверьте сертификат:
Если CSR успешно обработано, FreeIPA выдаст сертификат. Вы можете проверить сертификат, используя:
openssl x509 -in certificate.pem -text -noout
Шаг 4: Устранение неполадок
Если вы все еще сталкиваетесь с проблемами, проверьте журналы FreeIPA для получения более подробной информации:
tail -f /var/log/ipa/ipa.log
Убедитесь, что сервер FreeIPA имеет сетевой доступ к указанным IP-диапазонам.
Важно:
Отключение проверки IP SAN (disable_ip_san_check) может привести к рискам безопасности, так как это позволяет выдавать сертификаты для недоступных или недопустимых IP-адресов. Используйте эту опцию только если вы полностью понимаете последствия.
Если вы используете FreeIPA в контейнере Docker, убедитесь, что контейнер имеет сетевой доступ к указанным IP-диапазонам.
Полный пример
Вот полный пример процесса:
Изменение ipa.conf:
vi /etc/ipa/default.conf
Добавьте:
ini
Копировать
[global]
disable_ip_san_check = True
Генерация CSR:
openssl req -new -newkey rsa:2048 -nodes -keyout private.key -out csr.pem -subj "/CN=your-common-name" -addext "subjectAltName=IP:10.0.0.1,IP:172.16.0.1,IP:192.168.0.1"
Отправка CSR:
ipa cert-request csr.pem --add --principal=host/your-hostname@YOUR-REALM
Проверка сертификата:
openssl x509 -in certificate.pem -text -noout
Ответ или решение
Введение в проблему с FreeIPA при использовании SAN в запросе на сертификат:
FreeIPA — это мощная система управления идентичностью и доступом (IAM), которая предоставляет интеграцию на базе Kerberos с поддержкой PKI (Public Key Infrastructure). Однако в контексте подписи CSR (Certificate Signing Request), включающего атрибут SAN (Subject Alternative Name), пользователи могут сталкиваться с ошибкой: «ERROR: invalid ‘csr’: IP address in subjectAltName (x.x.x.x) unreachable from DNS names». Эта ошибка происходит, когда адреса IP в SAN недоступны из доменных имен, связанных с FreeIPA. Решим эту проблему в нескольких шагах, уделяя внимание каждого аспекта задачи.
Проблема и её причина:
Как указано в описании проблемы, FreeIPA установлена в контейнере Docker с определённым IP-адресом (например, 10.88.x.x), который не соответствует другим сетям, используемым в инфраструктуре, например, сетям OpenStack с множеством диапазонов /24, /25, /26. При попытке использовать запрос на сертификат (CSR) с SAN, содержащим IP-адреса из таких сетей, CSR отвергается. Это связано с тем, что FreeIPA по умолчанию проверяет, доступен ли указанный IP адрес из зарегистрированных в DNS доменных имён.
Теория:
FreeIPA, как часть своей функциональности безопасности, требует, чтобы все IP-адреса в SAN были проверяемы через DNS. Если это невозможно (как в случае с отключёнными сетями или сетями, не резолвящимися через DNS FreeIPA), система отклоняет такие запросы в целях безопасности. Однако в условиях контейнеризованных сред и сложных настройках виртуальных сетей такая проверка может быть затруднительной или невыполнимой. Временно отключив эту функцию проверки, можно обойти данную проблему, хотя это может повлечь за собой определённые риски безопасности.
Пример — пошаговое решение проблемы:
-
Изменение конфигурации FreeIPA:
-
Подключитесь к серверу FreeIPA или контейнеру Docker.
-
Откройте конфигурационный файл для FreeIPA (по пути
/etc/ipa/default.conf
) с помощью текстового редактора, напримерvi
. -
Добавьте следующую строку, чтобы отключить проверку доступности IP в SAN:
[global] disable_ip_san_check = True
-
Сохраните и закройте файл.
-
Перезапустите службы FreeIPA для применения изменений, используя следующую команду:
systemctl restart ipa
-
-
Создание CSR с SAN:
-
Если вы ещё не создали CSR с необходимыми полями SAN, выполните следующую команду OpenSSL:
openssl req -new -newkey rsa:2048 -nodes -keyout private.key -out csr.pem -subj "/CN=ваше-обычное-имя" -addext "subjectAltName=IP:10.x.x.x,IP:172.x.x.x,IP:192.x.x.x"
-
Замените
10.x.x.x
,172.x.x.x
и192.x.x.x
на фактические IP адреса, которые вы хотите включить в SAN.
-
-
Передача CSR на FreeIPA:
-
Подайте CSR на FreeIPA с помощью команды
ipa cert-request
:ipa cert-request csr.pem --add --principal=host/ваш-хост@ВАШ-РЕАЛМ
-
Замените
ваш-хост
иВАШ-РЕАЛМ
на соответствующие значения.
-
-
Проверка сертификата:
-
Если CSR успешно обработан, FreeIPA выдаст сертификат. Вы можете проверить сертификат, используя следующую команду:
openssl x509 -in certificate.pem -text -noout
-
Применение:
Процедуры, описанные выше, должны обеспечить успешное создание и использование CSR с IP-адресами в SAN, которые находятся в различных виртуальных или физических сетях. Однако при применении таких решений важно понимать, что отключение проверки доступности IP-адресов в SAN может потенциально создать уязвимости в системе безопасности. Поэтому данное изменение следует рассматривать как временное решение, пока не будут разработаны более безопасные подходы или не будут переработаны сетевые архитектуры в соответствии с требованиями проверок FreeIPA.
Заключение:
Ошибка FreeIPA, связанная с проверкой SAN, является типичной для сложных систем виртуальных сетей, особенно таких, как OpenStack. С помощью корректной настройки конфигурационных файлов FreeIPA и понимания сетевой инфраструктуры, данная проблема может быть решена быстро и эффективно. Однако специалисты в области ИТ должны всегда оценивать возможные риски и поддерживать высокий уровень безопасности своей инфраструктуры.