Let’s Encrypt!

In der heutigen Zeit ist Datensicherheit sehr wichtig und Verschlüsselung ist ein wichtiger Bestandteil dieses Themas. Leider ist das Verschlüsseln in vielen Fällen ein komplexer Prozess, welcher von vielen Benutzern aufgrund fehlender Fachkenntnisse nicht oder nur ungenügend bewältigt werden kann. Um eine Webseite via Secure Socket Layer (SSL) beziehungsweise über Transport Layer Security (TLS) abzusichern, sodass diese über das Hypertext-Transfer-Protocol Secure (HTTPS) erreichbar ist, ist ein Zertifikat notwendig.

Dieses Zertifikat dient als Basis für verschlüsselte Verbindungen. Wenn ein Benutzer auf eine via HTTPS verschlüsselte Seite zugreifen möchte, wird eine verschlüsselte Verbindung aufgebaut.  Bevor diese Verbindung aufgebaut werden kann, wird das vom angefragten Server präsentierte Zertifikat überprüft. Hierbei wird überprüft, ob dem vom Server übermittelten Zertifikat vertraut werden kann.  Diese Vertrauensüberprüfung funktioniert etwas vereinfacht dargestellt folgendermaßen:

  1. Überprüfung der Signatur des Zertifikats auf Basis der Vertrauenskette
  2. Überprüfung ob die aufgerufene Domain mit der für das Zertifikat hinterlegten übereinstimmt

Was genau ist die Vertrauenskette des Zertifikats?

Im Prinzip sind in jedem Betriebssystem und zum Teil auch in Browsern wie Mozilla Firefox und Google Chrome Zertifikate von vertrauenswürdigen Zertifizierungsstellen vorinstalliert. Diesen Zertifikaten wird, sofern sie nicht zwischenzeitlich für ungültig erklärt wurden, immer vertraut. Bei der Überprüfung der Vertrauenskette wird, vereinfacht ausgedrückt, überprüft, ob der Signatur des Zertifikats bereits von den vorinstallierten Zertifikaten der vertrauenswürdigen Zertifizierungsstellen vertraut wird. Man spricht hier von einer Vertrauenskette, da es zum Beispiel möglich ist, dass der Signatur von Let's Encrypt auf Ihrem System nicht vertraut wird, allerdings wurde das Let's Encrypt Zertifikat, welches zum Signieren Ihres Zertifikats benutzt wurde, ebenfalls von einer dritten Zertifizierungsstelle signiert, welcher auf Ihrem System vertraut wird. Somit bürgt Let's Encrypt dafür, dass Ihr Zertifikat vertrauenswürdig ist und die dritte Zertifizierungsstelle, welcher auf Ihrem System vertraut wird, bürgt für die Vertrauenswürdigkeit von Let's Encrypt.

Wo und wie ist das Let's Encrypt Projekt einzuordnen?

Da der Aufbau und Betrieb einer vertrauenswürdigen Zertifizierungsstelle aufwändig und mit Kosten verbunden ist, war es bisher gang und gäbe, dass man für ein signiertes Zertifikat, dessen Signatur bereits von den vorinstallierten Zertifikaten vertraut wird, bezahlen muss. Let's Encrypt hat ebenfalls eine vertrauenswürdige Zertifizierungsstelle aufgebaut, welche kostenlos Zertifikate signiert und den Prozess der Zertifikatserstellung und Installation weitestgehend vereinfachen und automatisieren möchte. Der Hauptgedanke ist dabei, ein sichereres Internet voranzutreiben.

Automatische Zertifikate bei unseren Webspace Paketen

Wie wir bereits ausführlich im Post Webspace: Kostenlose SSL-Zertifikate sind ab sofort verfügbar informiert haben, ist auf unseren Webspace Paketen automatisch ein Zertifikat für die hinzugefügten Domains via Let's Encrypt aktiviert. Selbst das manuelle Erneuern der Zertifikate ist nicht mehr notwendig, da es ebenfalls automatisch passiert.

Let's Encrypt via AutoSSL in cPanel

Seit cPanel & WHM Version 58.0.17 wird Let's Encrypt offiziell von cPanel unterstützt. Zum jetzigen Zeitpunkt muss die Integration in AutoSSL vom Benutzer noch selbständig via Shell angestoßen werden. Hierfür muss das Installationsskript unter /scripts/install_lets_encrypt_autossl_provider als root Benutzer ausgeführt werden.  Nach erfolgreicher Installation kann Let's Encrypt unter Home >> SSL/TLS >> Manage AutoSSL als Zertifikat Provider ausgewählt werden.

autossl_lets_encryptEinstellungen für spezifische Benutzer können unter dem Reiter "Manage Users" vorgenommen werden.

Benutzung von Let's Encrypt ohne Administration Panel (Debian 8)

Es wird empfohlen, Certbot in Verbindung mit Let's Encrypt zu benutzen. In unserem Beispiel benutzen wir Apache als Webserver und Debian 8 als Betriebssystem.

Als root Benutzer müssen folgende Befehle ausgeführt werden um Certbot für Apache und dessen Abhängigkeiten zu installieren:

# Debian Jessie backports repository aktivieren

echo "deb http://ftp.debian.org/debian jessie-backports main" >> /etc/apt/sources.list && apt-get update

 

# Certbot installieren

apt-get install python-certbot-apache -t jessie-backports

 

Nach dem Abschluss der Installation ist es via Certbot möglich, vollautomatisch signierte Zertifikate für Ihre Domains zu generieren. Diese werden dann, ebenfalls automatisch, in Apache für Sie konfiguriert. Folgender Befehl startet einen Konfigurationsdialog  in dem benötigte Informationen wie, Domain Namen und E-Mail Adresse abgefragt werden. Nach der Eingabe der erforderlichen Informationen und dem Bestätigen der AGB von Let's Encrypt, werden Ihre signierten Zertifikate bezogen und automatisch in Apache konfiguriert. Es ist ebenfalls möglich zu konfigurieren, ob Ihre Domains via HTTP und HTTPS oder nur via HTTPS erreichbar sein sollen.

# Automatischen Konfigurationsdialog starten

certbot --apache

Falls man das Zertifikat selbst konfigurieren möchte, kann folgender Befehl benutzt werden welcher nur das Zertifikat erstellt.

# Zertifikat Erstellen ohne automatische Konfiguration in Apache

certbot --apache certonly

Certbot funktioniert nicht nur in Verbindung mit dem Apache Webserver und Debian 8, es sind viele Betriebssystem und Webserver Kombinationen möglich, welche unter folgendem Link eingesehen werden können: Certbot.

Installation von Let's Encrypt ohne Administration Panel (CentOS 7.2)

Da die Benutzung von Certbot auf CentOS exakt wie auf Debian 8 funktioniert, wird im folgenden nur kurz auf die Installation von Certbot auf CentOS eingegangen. Da die Apache/httpd default Installation (yum install httpd) auf CentOS nicht das SSL Modul installiert, muss darauf geachtet werden, dass dieses ebenfalls installiert ist.

# Extra Packages for Enterprise Linux und optional mod_ssl installieren

yum install epel-release mod_ssl 

# Certbot installieren

yum install python-certbot-apache

 

Automatische Verlängerung der Zertifikate einrichten

Da Zertifikate von Let's Encrypt nur eine Gültigkeit von drei Monaten haben, ist es wichtig, eine automatische Verlängerung einzurichten.

Bei der Installation des Debian 8 Pakets von Certbot wurde solch ein "cron-job" bereits automatisch eingerichtet. Auf CentOS wird dieser nicht automatisch eingerichtet, allerdings kann man diesen, wie unten stehend, auf einer Standard CentOS Installation anlegen.

# /etc/cron.d/certbot

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

0 */12 * * * root test -x /usr/bin/certbot && perl -e 'sleep int(rand(3600))' && certbot -q renew

 

Dieser cron-job wird alle 12 Stunden ausgeführt und erneuert die Gültigkeit aller Zertifikate, falls diese weniger als 30 Tage Gültigkeit aufweisen. Es wird empfohlen, dass alle 12 Stunden die Gültigkeit der Zertifikate überprüft wird, damit man zeitnah mitbekommt, ob Zertifikate für ungültig erklärt wurden.