[[software:letsencrypt]]

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.

Comparison of 10 ACME / Let's Encrypt Clients

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.

:!: 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 

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

Apache SSL config

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

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