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 integrietete Modi für Webserver wie Apache.

Installation

Debian stretch hat letsencrypt bereits in den Paketquellen.

Debian wheezy

aptitude install git
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt

Debian jessie

Es müssen die jessie-backports aktiviert werden:

deb http://http.debian.net/debian jessie-backports main
aptitude update
aptitude -t jessie-backports install letsencrypt python-letsencrypt-apache

Benutzung

letsencrypt aufrufen (bei standalone-Variante vorher Webserver stoppen):

Debian wheezy:

./letsencrypt-auto certonly --rsa-key-size 3072 -d DOMAIN.tld -d www.DOMAIN.tld

Debian jessie:

letsencrypt certonly --rsa-key-size 3072 -d DOMAIN.tld -d www.DOMAIN.tld

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

SSLCACertificateFile /etc/apache2/letsencryptchain.pem
SSLCertificateFile /etc/apache2/DOMAIN.crt
SSLCertificateKeyFile /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, im einfachsten (aber nicht optimalen Fall weil Webserver gestoppt und es als root läuft):

/etc/crontab (oder include-Datei / Benutzer-crontab)

# m h dom mon dow user	command
12 4 *  1 * *   root    /root/letsencrypt-autorenew.sh
#!/bin/bash
service apache2 stop > /dev/null
sleep 2
letsencrypt renew > /dev/null
if [ $? -ne 0 ]; then
	echo "Fehler bei letsencrypt"
	service apache2 start
	exit 1
else
	service apache2 start
fi