Let’s Encrypt Zertifikate

Let’s Encrypt stellt kostenlose Zertifikate zur Verfügung, die von allen gängigen Browsern und Betriebssystemen anerkannt werden. Endlich ist die Zeit der selbst-signierten Zertifikate und nicht vertrauenswürdigen Zertifizierungsstellen vorbei.

Die kostenlosen Zertifikate sind domain-validiert und werden automatisch erstellt – die Anforderung ist damit unbürokratisch und die Zertifikate sind sofort verfügbar. Die Gültigkeit der Zertifikate ist auf 3 Monate beschränkt, was aber dank ausgeklügelter Möglichkeiten zur Automatisierung kein Problem darstellt.

Let’s Encrypt stellt verschiedene Clients bereit, die sowohl die Antragstellung als auch die Verlängerung übernehmen und automatisieren können. Der bekannteste ist CertBot.

Installation

CertBot lässt sich in fast allen größeren Linux-Distributionen über den integrierten Paketmanager installieren. Am Beispiel von Debian lautet der Befehl:

apt-get install certbot

Antragstellung

Die Erstellung eines Zertifikats ist einfach und wahlweise Menü-geführt oder durch einen einzelnen Befehl durchführbar. Da i.d.R. mehrere Zertifikate benötigt werden, sollte ein Script erstellt werden, dass alle Zertifikate mit standardisierten Optionen erstellt.

#!/bin/bash
# /usr/local/newcert

# Author: Heiko Richter <email@heikorichter.name>
# Description: Automatische Beantragung von Zertifikaten

# Schluessellaenge
OPT="--rsa-key-size 4096"

# auskommentieren um HSTS zu deaktivieren
OPTS="$OPTS --hsts"

# auskommentieren um OCSP-Stapling zu deaktivieren
OPTS="$OPTS --must-staple"

`which certbot` $OPTS --no-self-upgrade --noninteractive -d $1

Im Script kann die Schlüssellänge flexibel festgelegt werden, um auch ältere Serverdienste zu unterstützen, die noch keinen langen Schlüssel akzeptieren. Zusätzlich können durch Auskommentieren der jeweiligen Zeilen HSTS und OCSP-Stapling deaktiviert werden, sofern der jeweilige Serverdienst dies noch nicht unterstützt. Außerdem ist es möglich, die verwendeten Ports zu ändern, falls die Standard-Ports durch einen Webserver blockiert sind.

Die Beantragung eines neuen Zertifikats findet somit über einen einzigen Befehl statt, für den man sich keine Parameter einprägen muss:

newcert example.com

Sofern der Domainname auf die IP-Adresse des beantragenden Servers verlinkt ist wird das Zertifikat ausgestellt und in einem einheitlichen Verzeichnis abgelegt, von dem aus es in der Konfiguration des jeweiligen Serverdiensts verlinkt werden kann:

/etc/letsencrypt/live/example.com/chain.pem
/etc/letsencrypt/live/example.com/cert.pem
/etc/letsencrypt/live/example.com/privkey.pem

Automatisierte Verlängerung

Da die Zertifikate nur 3 Monate gültig sind, müssen sie regelmäßig verlängert werden. Um den Aufwand gering zu halten kann ein täglicher Cronjob diesen Auftrag übernehmen. Er verlängert selbstständig alle Zertifikate, die kurz  vor ihrem Ablaufdatum stehen und weist den Webserver an, das neue Zertifikat zu laden.

0 3 * * * root certbot renew --no-self-upgrade --quiet --noninteractive && service apache2 reload

 

Share this...Share on FacebookShare on Google+Tweet about this on Twitter

Leave a Reply

Your email address will not be published. Required fields are marked *