Установка Cockpit с автообновляемым TLS-сертификатом из FreeIPA

Краткое описание процесса установки Cockpit с выпуском автообновляемого TLS-сертификатом из FreeIPA для обеспечения https.

2021-10-11

Условия

  • Выполняем все команды на целевой машине.
  • Предполагается, что машина введена во FreeIPA-домен.

Установка и включение Cockpit

sudo yum install cockpit
sudo systemctl enable --now cockpit.service
sudo systemctl enable --now cockpit.socket

Изменение номера порта

https://cockpit-project.org/guide/latest/listen.html

По умолчанию, cockpit слушает порт номер 9090. Перевесим его на 443-ий порт:

sudo mkdir -p /etc/systemd/system/cockpit.socket.d/

cat << EOF | sudo tee /etc/systemd/system/cockpit.socket.d/listen.conf
[Socket]
ListenStream=
ListenStream=443
EOF

sudo systemctl daemon-reload

Скрипт для запуска после автоматической смены сертификата

cat << EOF | sudo tee /etc/cockpit/RunAfterUpdateCert.sh 
#!/bin/bash
rm -f /etc/cockpit/ws-certs.d/0-self-signed.cert.1
mv /etc/cockpit/ws-certs.d/0-self-signed.cert /etc/cockpit/ws-certs.d/0-self-signed.cert.1
cat /etc/pki/tls/certs/HTTP_$(hostname).crt \
    /etc/pki/tls/private/HTTP_$(hostname).key > \
    /etc/cockpit/ws-certs.d/0-self-signed.cert

/usr/bin/systemctl restart cockpit.service
/usr/bin/systemctl restart cockpit.socket
EOF

Запрос TLS-сертификата с автообновлением

Предположим, что альтернативное имя для хоста будет 'cp01.example.org'.

ALIAS="cp01"

kinit
ipa dnsrecord-add $(hostname -d) ${ALIAS} --cname-rec="$(hostname)."
ipa service-add HTTP/$(hostname)@$(hostname -d)|tr [:lower:] [:upper:])
ipa service-add-principal HTTP/$(hostname) HTTP/${ALIAS}.$(hostname -d)

sudo ipa-getcert request -K HTTP/$(hostname) \
-f /etc/pki/tls/certs/HTTP_$(hostname).crt \
-k /etc/pki/tls/private/HTTP_$(hostname).key \
-D "${ALIAS}.$(hostname -d)" -C "/bin/bash -c '/etc/cockpit/RunAfterUpdateCert.sh'"