Kámoš mi, po přečtení článku o nasazení Let’s Encrypt na GitLab, doporučil použít skript dehydrated. Zde je tedy krátký návod, jak na něj.

Uživatel

Vytvoříme systémového uživatele pro běh skriptu dehydrated (kam také naklonujeme výše uvedený repositář):

useradd -d /var/lib/dehydrated -r -s /usr/sbin/nologin dehydrated
mkdir /var/lib/dehydrated
chown dehydrated:dehydrated /var/lib/dehydrated

Vytvoříme složku pro acme challange (tato složka musí být dostupná jako http://domain/.well-known/acme-challenge/ - nastavení webového serveru není obsahem tohoto článku):

mkdir /var/www/dehydrated
setfacl -m u:dehydrated:rwx /var/www/dehydrated

Config

Nastavíme dehydrated (/var/lib/dehydrated/config):

BASEDIR=$SCRIPTDIR
DOMAINS_TXT="${BASEDIR}/domains.txt"
CERTDIR="${BASEDIR}/certs"
ACCOUNTDIR="${BASEDIR}/accounts"
WELLKNOWN="/var/www/dehydrated"
KEYSIZE="4096"

A seznam domén (/var/lib/dehydrated/domains.txt) ve tvaru:

example.com www.example.com
example.net www.example.net wiki.example.net

Takto se vytvoří dva certifikáty (dva řádky), s příslušnýmy jmény v SAN.

A zkusíme zavolat:

su -s /bin/bash -c "/var/lib/dehydrated/dehydrated --register --accept-terms" dehydrated

Služby

Pokud je vše ok, nastavíme systemd service (např: /etc/systemd/system/dehydrated.service):

[Unit]
Description=Renew LE certs
Documentation=https://github.com/lukas2511/dehydrated

[Service]
Type=oneshot
User=dehydrated
Group=dehydrated
WorkingDirectory=/var/lib/dehydrated
ExecStart=/bin/bash dehydrated -c

a timer (/etc/systemd/system/dehydrated.timer):

[Unit]
Description=Renew LE certs regularly

[Timer]
OnCalendar=daily
AccuracySec=1h
Persistent=true

[Install]
WantedBy=timers.target

A zkontrolujeme:

systemctl daemon-reload

systemctl start dehydrated
systemctl status dehydrated

Měl by se zažádat o cert a vytvořit v /var/lib/dehydrated/certs/domain/ soubory. Pokud je vše ok, sputíme timer:

systemctl enable dehydrated.timer
systemctl start dehydrated.timer