letsencrypt
letsencrypt bietet die Möglichkeit kostenlos 3-Monate gültige SSL/TLS-Zertifikate zu beziehen.
Es existieren mehrere Clients, die unterschiedliche Methoden und Automatisierungsgrade unterstützen.
letsencrypt offizieller Client (certbot)
Die offizielle Client-Software muss direkt auf dem Server gestartet werden (funktioniert also nicht für shared-Hosting sondern nur bei vhosts/root-Servern mit shell-Zugang) und unterstützt. Im standalone-Modus muss der laufende Webserver angehalten werden, es existieren jedoch integrierte Modi für Webserver wie Apache.
Eine detaillierte Liste für alle verbreiteten Plattformen führt die eff auf.
Installation
Da letsencrypt hat die Methode TLS-SNI-01 entfernt, daher ist nun mindestens certbot –version >= 0.28 nötig.
Bei Debian sind in allen älteren stabilen Releases (vor Debian 9 / stretch) veraltete Versionen von certbot (bzw. als virtuelles Paket letsencrypt) in den Paketquellen enthalten. Daher ist die generische Methode via git zu verwenden.
generische Methode
apt install git git clone https://github.com/letsencrypt/letsencrypt cd letsencrypt
Ubuntu / nginx
apt-get update apt-get install -y software-properties-common add-apt-repository universe add-apt-repository -y ppa:certbot/certbot apt-get update apt-get install -y python-certbot-nginx
Benutzung
letsencrypt aufrufen:
generisch:
./letsencrypt-auto certonly --rsa-key-size 3072 -d DOMAIN.tld -d www.DOMAIN.tld
bei Apache + standalone-Variante vorher Webserver stoppen:
letsencrypt certonly --pre-hook "systemctl stop apache2" --post-hook "systemctl start apache2" --rsa-key-size 3072 -d DOMAIN.tld -d www.DOMAIN.tld
Zertifikate verlinken
Zertifikate verlinken:
ln -s /etc/letsencrypt/live/DOMAIN/fullchain.pem letsencryptchain.pem ln -s /etc/letsencrypt/live/DOMAIN/cert.pem /etc/apache2/DOMAIN.crt ln -s /etc/letsencrypt/live/DOMAIN/privkey.pem /etc/apache2/DOMAIN.key
wildcard-Domains
Vorraussetzung ist ein v2 acme-Client, direkt per git:
aptitude install git git clone https://github.com/letsencrypt/letsencrypt
Client holt ein Zertifikat für *.DOMAIN.tld und DOMAIN.tld:
./letsencrypt/letsencrypt-auto certonly -d DOMAIN.tld -d *.DOMAIN.tld --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory
Zur Verifikation müssen zwei (!) DNS TXT-Records als _acme-challenge.DOMAIN.tld angelegt werden. Den Inhalt Inhalt legt der Client fest (hier ein Beispiel für „ApKINd5_XvyTvIqFXechXhbH7RebdR01hw5YhTxfQxd“)
Please deploy a DNS TXT record under the name _acme-challenge.DOMAIN.tld with the following value: ApKINd5_XvyTvIqFXechXhbH7RebdR01hw5YhTxfQxd Before continuing, verify the record is deployed. ------------------------------------------------------------------------------- Press Enter to Continue
automatische Verlängerung
Die Verlängerung lässt sich auch skripten. Dazu gibt es mehrere Varianten:
Der Befehl/das Skript sollte in /etc/crontab
(oder include-Datei / Benutzer-crontab) eingetragen werden.
Apache
Apache standalone (stop+restart):
12 4 1 * * root certbot renew -q --pre-hook "systemctl stop apache2" --post-hook "systemctl start apache2"
Es können auch mehrere Befehle (Dienste) angegeben werden:
–pre-hook „service apache2 stop ; service postfix stop“
nginx
cat ./cron.d/certbot
0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(43200))' && certbot -q renew