Dehydrated je script zjednodušující nasazení Let's Encryp certifikátů.
git clone https://github.com/lukas2511/dehydrated sudo cp dehydrated/dehydrated /usr/local/bin sudo chmod +x /usr/local/bin/dehydrated sudo mkdir /etc/dehydrated sudo cp dehydrated/docs/examples/* /etc/dehydrated sudo adduser --system --group --disabled-login --disabled-password --no-create-home dehydrated sudo chgrp -R dehydrated /etc/dehydrated sudo mkdir -p /var/www/dehydrated/.well-known/acme-challenge/ sudo chown -R www-data:www-data /var/www/dehydrated/
Dále vytvoříme /etc/dehydrated/config soubor:
BASEDIR=/etc/dehydrated WELLKNOWN="/var/www/dehydrated/.well-known/acme-challenge/" CONTACT_EMAIL=mail@example.com HOOK=/etc/dehydrated/hook.sh
a upravíme /etc/dehydrated/hook.sh tak že na konec sekce deploy_cert() přidáme tyto řádky:
cat $KEYFILE $FULLCHAINFILE > /etc/dehydrated/certs/${DOMAIN}/fullcert.pem chmod 750 /etc/dehydrated/certs/${DOMAIN} chmod 640 /etc/dehydrated/certs/${DOMAIN}/*.pem
provedeme znovu úpravu práv
sudo chgrp -R dehydrated /etc/dehydrated
A základní konfiguraci máme hotovou. Nyní nám stačí jen do /etc/dehydrated/domains.txt a do jednoho řádku napsat doménu a její subdomény pro které vytvořit certifikát. formát je následovný:
example.com subdomain.example.com othersubdomain.example.com
A tímto jsme připraveni začít s vytvořením účtu a následnému vytvoření certifikátu. Nejdříve si vytvoříme účet na Let's Encrypt:
/usr/local/bin/dehydrated --register --accept-terms
Vygenerujeme si certifikáty pro domény uvedené v domains.txt:
dehydrated -c -f /etc/dehydrated/config
A jelikož Let's Encrypt certifikáty mají platnost jen 90 dní, nastavíme si jednoduché obnovování pomocí cron. Do /etc/crontab přidáme následující řádky které nám obnoví zkusí obnovit certifikáty a následně restartují lighttpd aby se obnovené certifikáty načetly.
# Obnovení Let's Encrypt certifikatu 5 2 * * 6 root /usr/local/bin/dehydrated -c -f /etc/dehydrated/config 10 2 * * 6 root /etc/init.d/lighttpd restart
Pro nasazení certifikátů do lighttpd použijte certs.conf.
POZOR! Let's Encrypt nepodporuje *.example.com v domains.txt!