Let’s Encrypt key und csr selbst erstellen

Im vorangegangenen Let’s Encrypt Artikel ging es hauptsächlich um die DNS Authentifizierung. Heute soll gezeigt werden, wie man diese um einen selbstgenerierten key und csr erweitert.

Anlegen einer kleinen Helfer-Verzeichnisstruktur. Diese sowie der key und die csr Datei werden nur einmalig angelegt. Bei den weiteren alle 3 Monaten anstehenden Verlängerungen, wird jeweil nur durch Setzen der DOMAIN Variable darauf zurückgeriffen.

:~# DOMAIN=behind.localhorst.org
:~# mkdir -p /opt/letsencrypt-ca/$DOMAIN
:~# cd /opt/letsencrypt-ca/$DOMAIN

Key mittels OpenSSL generieren.

:~# openssl genrsa -out $DOMAIN.key 4096
Generating RSA private key, 4096 bit long modulus
.......................++
[...]
e is 65537 (0x10001)

Beim Erstellen des csr ist im Prinzip nur der zu beantragende Common Name bzw. Domain Name wichtig. Da der beim Erstellen des csr weiter abgefragte Rest bei einem Domain validierten Zertifikat von der Zertifizierungstelle im späteren Zertifikat überschrieben wird.

:~# openssl req -new -key $DOMAIN.key -out $DOMAIN.csr
[...]
Common Name (e.g. server FQDN or YOUR name) []:behind.localhorst.org
[...]

Konfig für den Client Aufruf

:~# vim $DOMAIN.conf
email = HIER GÜLTIGE EMAIL ADRESSE EINTRAGEN
text = True

Aufruf des certbot Clients.

:~# ./certbot-auto --manual --preferred-challenges dns certonly \
--config /opt/letsencrypt-ca/$DOMAIN/$DOMAIN.conf \
--key /opt/letsencrypt-ca/$DOMAIN/$DOMAIN.key \
--csr /opt/letsencrypt-ca/$DOMAIN/$DOMAIN.csr \
--cert-path /opt/letsencrypt-ca/$DOMAIN/$DOMAIN.cert.pem \
--fullchain-path /opt/letsencrypt-ca/$DOMAIN/$DOMAIN.fullchain.pem

Im weiteren Beantragungsprozess wird wieder ein DNS Eintrag erstellt. Siehe im Link oben folgend weiter beschrieben. Nach erfolgreichem Generieren des Zertifikates liegen alle Dateien im Verzeichnis.

:~# ls -la /opt/letsencrypt-ca/$DOMAIN
-rw-r--r-- 1 root root 2159 Mär 18 09:27 behind.localhorst.org.cert.pem
-rw-r--r-- 1 root root   39 Mär 18 09:25 behind.localhorst.org.conf
-rw-r--r-- 1 root root 1760 Mär 18 09:24 behind.localhorst.org.csr
-rw-r--r-- 1 root root 3806 Mär 18 09:27 behind.localhorst.org.fullchain.pem
-rw-r--r-- 1 root root 3243 Mär 18 09:23 behind.localhorst.org.key

Auf den zu schützenden (Web-)Server müssen nun noch die beiden Dateien *.fullchain.pem und *.key kopiert und in die entsprechende Konfiguration eingebunden werden.

Ist das Let’s Encrypt Zertifikat nach seiner 3-monatigen Gültigkeit abgelaufen, ist beim erneuten Aufruf des certbot Clients mit der gesetzten DOMAIN Variable nur darauf zu achten, dass die *.cert.pem und die *.fullchain.pem Datei sich nicht mehr in dem obigen Helfer-Verzeichnis befinden. Ansonsten erscheint die Fehlermeldung wie folgt:

An unexpected error occurred:
OSError: [Errno 17] File exists: '/opt/letsencrypt-ca/behind.localhorst.org/behind.localhorst.org.cert.pem'
Please see the logfiles in /var/log/letsencrypt for more details.