Kostenlose Zertifikate LetsEncrypt

LetsEncrypt bietet seit einigen Jahren kostenlose Zertifikate an, die in allen Browsern validiert werden können. Damit ist die Zeit der selbstsignierten Zertifikate und der Pseudo-Sicherheit von CACert endlich vorbei.

Ziel von LetsEncrypt ist eine automatische Aktualisierung der Zertifikate. Deshalb laufen diese auch alle 3 Monate ab. Es muss deshalb aber niemand vor der Nutzung zurückschrecken, denn die Automatisierung ist mit minimalen Eingriffen ins System möglich.

1. Voraussetzungen

Als erstes gilt es, die Voraussetzungen zu schaffen. Dazu aktualisieren wir das System und installieren den Client CertBot:

# apt update
# apt -y upgrade
# apt -y install certbot

Wer die neueste Version von CertBot nutzen möchte oder eine Linux-Vatiante ohne CertBot-Pakete nutzt, kann natürlich auch per GIT installieren.

2. Konto erstellen

Im ersten Schritt erstellen wir ein Benutzerkonto:

# certbot register

Während der Registrierung werden die Einwilligung zur Lizenz, die eigene E-Mail-Adresse und eine optionale Newsletter-Anmeldung abgefragt.

3. Einstellungen

Es lohnt sich, einige Standard-Einstellungen zu hinterlegen, um Befehle auf der Konsole kurz zu halten. Dazu legen wird die Datei /etc/letsencrypt/cli.ini an.

Passen Sie auf jeden Fall Ihre E-Mail-Adresse an! Die letzten 4 Optionen (hsts, redirect, uir und staple-ocsp) sind optional, sollten aber aktiviert werden, sofern die eingesetzten Serverdienste sie unterstützen.

# This is an example of the kind of things you can do in a configuration file.
# All flags used by the client can be configured here. Run Certbot with
"--help" to learn more about the available options.
#
# Note that these options apply automatically to all use of Certbot for
# obtaining or renewing certificates, so options specific to a single
# certificate on a system with several certificates should not be placed
# here.

# default keysize
rsa-key-size = 4096

# default email address to register all certs to
email = [email protected]

# always agree to tos
agree-tos

# don't want eff newsletter
no-eff-email

# force all clients to use https
hsts
redirect
uir
staple-ocsp

4. Zertifikate anfordern

Nun können Zertifikate angefordert werden. Ein Beispiel für meine Domain lautet:

# certbot certonly --webroot --webroot-path /var/www/heikorichter/ -d heikorichter.name -d www.heikorichter.name

Die Verifizierung erfolgt durch eine Datei, die CertBot im Root-Verzeichnis des Webservers ablegt, damit sie durch die LesEncrypt-Server abgerufen werden kann. Der Parameter --webroot-path muss also zwingend auf das korrekte Verzeicnis zeigen!

Nach erfolgreicher Verifizierung des Servers stellt CertBot die erstellten Zertifikate im Verzeichnis /etc/letsencrypt/live zur Verfügung:

  • /etc/letsencrypt/live/heikorichter.name/fullchain.pem
    Diese Datei enthält das Zertifikat (ohne privaten Schlüssel) und die Zertifikate der zuständigen Zertifizierungsstellen. Diese Datei sollte bei allen Diensten als Speicherort für den öffentlichen Schlüssel angegeben werden.
  • /etc/letsencrypt/live/heikorichter.name/cert.pem und
    /etc/letsencrypt/live/heikorichter.name/chain.pem
    Diese beiden Dateien enthalten das gleiche, wie fullchain.pem, aber auf zwei Dateien aufgetrennt. In cert.pem liegt nur das Zertifikat, in chain.pem liegen die Zertifikate der Zertifizierungsstellen. Einige wenige (meist veraltete) Serverdienste wollen diese Informationen in zwei verschiedenen Dateien haben.
  • /etc/letsencrypt/live/heikorichter.name/privkey.pem
    Hier liegt der private Schlüssel zum Zertifikat.

5. Zertifikate installieren

Nun gilt es, die Zertifikate auf den Serverdiensten zu installieren. Das funktioniert für jeden Dienst anders. Für den äußerst beliebten Webserver Apache sieht die Konfiguration z.B. so aus:

<VertualHost *:443>
   ServerName heikorichter.name
   ServerAlias www.heikorichter.name
   DocumentRoot /var/www/heikorichter
   SSLEngine on
   SSLCertificateFile /etc/letsencrypt/live/heikorichter.name/fullchain.pem
   SSLCertificateKeyFile /etc/letsencrypt/live/heikorichter.name/privkey.pem
</VirtaulHost>

Nach dem Anpassen der Konfiguration muss der Dienst natürlich neu gestartet bzw. neu geladen werden. Hier wieder am Beispiel von Apache:

# service apache2 reload

6. Zertifikate aktualisieren

Wie bereits zuvor erwähnt, laufen die Zertifikate alle 3 Monate ab. Daher muss ein Cronjob eingerichtet werden, der die Zertifikate automatisch aktualisiert. Dazu erstellen wir die Datei /etc/cron.d/certbot, die die entsprechende Anweisung enthält:

40 3 * * * root certbot renew --non-interactive --quiet --deploy-hook /etc/letsencrypt/deploy

Cron wird den Befehl täglich ausführen, CertBot wird aber nur die Zertifikate aktualisieren, die noch weniger als eine Woche gültig sind.

7. Zertifikate automatisch installieren

Nach einer automatischen Aktualisierung der Zertifikate, müssen diese natürlich auch den Serverdiensten bekannt gemacht werden. Das erfolgt über ein Bash-Script, das im zuvor erstellen Cronjob über den Parameter --deploy-hook /etc/letsencrypt/deploy verlinkt ist:

#!/bin/bash

service apache2 reload
service postfix reload
service dovecot reload
service proftpd reload

Es handelt sich um ein minimales Script, das lediglich Dienste anweist, ihre Konfiguration neu zu laden. Natürlich muss das Script entsprechend angepasst werden, damit die korrekten Dienste angesprochen werden.

Aufrufe: 54

Ähnliche Artikel

Comments

Leave a Comment