Установка сертификатов FreeIPA¶
Для интеграции с внешними сервисами и обеспечения безопасности соединений, необходимо установить и настроить SSL/TLS сертификаты для FreeIPA. Постарался описать процесс установки сертификатов Let’s Encrypt, включая автоматизацию обновлений с помощью скриптов и cron.
-
Сделаем бэкап сертификатов:
-
Исполняем на сервер скрипт установки корневых сертификатов letsencrypt внутрь freeipa:
https://gist.github.com/4volodin/b6761a71de7b0db951dfe85ccf2f24bb
-
Установим certbot и остановим службу httpd которая была установлена вместе с freeipa:
-
Получаем сертификат через certbot letsencrypt:
-
Стартуем сервер httpd:
systemctl restart httpd
-
Установим сертификат внутрь freeipa и каждый раз как certbot обновит сертификат нужно сделать:
-
После установки сертификата перезапустим службы freeipa:
ipactl restart
-
Нужно проверить сертификаты для http и ldap:
-
Обновление Kerberos билетов
-
Автоматизация обновления сертификатов с помощью скрипта и cron:
/etc/letsencrypt/renewal/freeipa.truedev.ru.conf
pref_challs = http-01,
authenticator = standalone
server = https://acme-v02.api.letsencrypt.org/directory
key_type = ecdsa
pre_hook = systemctl stop httpd
deploy_hook = bash -c 'export DIRMAN_PASSWORD="..."; ipa-server-certinstall -w -d /etc/letsencrypt/live/freeipa.truedev.ru/privkey.pem /etc/letsencrypt/live/freeipa.truedev.ru/cert.pem --pin=""; unset DIRMAN_PASSWORD'
post_hook = systemctl start httpd && ipactl restart && ipa-certupdate
sudo crontab -e
--keep-until-expiring - чтобы обновлять сертификат только тогда, когда он истекает или истекает в течение 30 дней. Это позволяет избежать частых запросов новых сертификатов, если текущий сертификат все еще действителен.
При использовании скрипта
renew-le.sh
из репы - была ошибка на ldaps сертификат - якобы самоподписанный сертификат в цепочке, хотя сертификат на https был без ошибок. Could not authenticate you from Ldapmain because "Ssl connect returned=1 errno=0 peeraddr=IP_ADDRESS:636 state=error: certificate verify failed (self signed certificate in certificate chain)". Поэтому было решено использовать встроенный механизм установки сертификатов через ipa-server-certinstall
Если сертификат истек во freeipa, но certbot получил сертификат
предыдущий
openssl x509 -noout -text in /etc/letsencrypt/live/ipa.truedev.ru/cert2.pem
Validity
Not Before: Apr 8 16:14:48 2024 GMT
Not After : Jul 7 16:14:47 2024 GMT
который не смог применится через ipa-server-certinstall
openssl x509 -noout -text in /etc/letsencrypt/live/ipa.truedev.ru/cert3.pem
Validity
Not Before: Jun 7 17:35:31 2024 GMT
Not After : Sep 5 17:35:30 2024 GMT
значит дату нужно установить на 8 июня
systemctl stop chronyd
timedatectl set-time "2024-06-08"
ipa-server-certinstall -w -d /etc/letsencrypt/live/freeipa.truedev.ru/privkey.pem /etc/letsencrypt/live/freeipa.truedev.ru/cert.pem --pin='' --dirman-password=''
ipactl restart
systemctl start chronyd
ipa-certupdate -v
reboot now