Wie man ein kostenloses "Let’s Encrypt" SSL-Zertifikat in Nginx (Ubuntu) einrichtet

Wenn Sie viele Artikel zu Datenschutz-Tipps gelesen haben, werden Sie sicherlich auf einen Tipp stoßen, der Sie fordert, die Erweiterung “HTTPS everywhere” zu installieren, damit Sie automatisch auf die HTTPS-Version der Website wann immer möglich umgeleitet werden. Das schlechte daran ist, dass die Erweiterung HTTPS everywhere nur funktioniert, wenn die Website, die Sie besuchen, SSL implementiert hat, und für die meisten Webmasters kann das eine schwierige (und kostspielige) Aufgabe an sich sein. Glücklicherweise ist es durch die Let’s Encrypt Bewegung jetzt einfacher für Webmaster, SSL-Zertifikate zu ihren Seiten hinzuzufügen.

In der Vergangenheit (und derzeit) benötigte die Einrichtung eines SSL-Zertifikats, dass Sie zuerst einen privaten Schlüssel auf Ihrem Server generieren, dann ein SSL-Zertifikat von der Zertifizierungsstelle kaufen (was teuer sein kann) und schließlich es auf dem Server einrichten. Es gibt viele technische Details im Prozess, und es falsch zu machen, macht das SSL-Zertifikat nutzlos. Mit dem Let’s Encrypt-Projekt kann man schnell ein SSL-Zertifikat auf seinen Seiten ohne Kosten hinzufügen. Und da es von großen Akteuren der Branche wie Mozilla, Akamai, Cisco, EFF und Google unterstützt wird, wird es von den meisten Browsern und Betriebssystemen unterstützt.

In diesem Tutorial gehen wir die Schritte durch, um das Let’s Encrypt SSL-Zertifikat im Nginx-Server einzurichten. Wir verwenden einen Ubuntu 14.04-Server für dieses Tutorial und setzen voraus, dass Sie einen funktionierenden Nginx Ubuntu-Server verwenden. Die Anweisungen können für den Ubuntu 16.04-Server abweichen.

Let’s Encrypt installieren

Zuerst müssen Sie git installieren, um es aus dem Git-Repository zu klonen. Installieren Sie git mit folgendem Befehl:

sudo apt-get install git bc

Sobald installiert, klonen Sie das Let’s Encrypt Repository:

sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt

Die Umgebung einrichten

Bevor wir mit der Installation und Einrichtung des SSL-Zertifikats fortfahren, ist es wichtig, den Zugriff auf den Ordner .well-known im Web-Stammverzeichnis zu erlauben. Standardmäßig sind alle Dateien und Ordner, die einen „.“ vor dem Dateinamen haben, versteckt und nicht für die Öffentlichkeit zugänglich. In diesem Fall müssen wir jedoch die Erlaubnis erteilen, dass die Öffentlichkeit auf den Ordner .well-known zugreifen kann, da hier Let’s Encrypt eine spezielle Datei zur Validierung speichern wird.

Wechseln Sie zu Ihrem Nginx-Standortkonfigurationsordner und öffnen Sie ihn (falls Sie eine benutzerdefinierte Konfigurationsdatei für Ihre Website haben) oder verwenden Sie die Standardkonfiguration:

cd /etc/nginx/sites-available  
sudo nano default

Fügen Sie die folgenden Zeilen in den Serverblock ein:

location ~ /\.well-known {  
    allow all;  
}

Speichern Sie (Strg + O) und schließen Sie (Strg + X) die Konfigurationsdatei.

Testen Sie Ihre Nginx-Konfiguration:

sudo nginx -t

Wenn alles in der Konfiguration in Ordnung ist, laden Sie die Konfiguration neu:

sudo service nginx reload

Ein SSL-Zertifikat generieren

Jetzt, da Sie mit der Nginx-Konfiguration fertig sind, ist das nächste, das SSL-Zertifikat zu installieren.

Gehen Sie zum Let’s Encrypt-Ordner:

cd /opt/letsencrypt

Führen Sie den folgenden Befehl aus, um das Zertifikat zu generieren:

./letsencrypt-auto certonly -a webroot --webroot-path=/usr/share/nginx/html -d example.com

Es gibt ein paar Dinge zu ändern:

  • Ändern Sie den webroot-path auf den Dokumentenstamm Ihrer Website. Der Standard ist “/usr/share/nginx/html”, aber Ihre Konfiguration könnte abweichen.
  • Ändern Sie “example.com” in Ihren eigenen Domainnamen. Beachten Sie, dass “example.com” und “www.example.com” zwei verschiedene Domains sind. Wenn Sie möchten, dass das Zertifikat mehrere Domains unterstützt, fügen Sie einfach -d example1.com am Ende des Befehls hinzu. Zum Beispiel, um ein SSL-Zertifikat für die Domains “example.com”, “www.example.com”, “example1.com” und “www.example1.com” einzurichten, verwenden Sie folgenden Befehl:
./letsencrypt-auto certonly -a webroot --webroot-path=/usr/share/nginx/html -d example.com -d www.example.com -d example1.com -d www.example1.com

Beim ersten Ausführen wird das Skript eine Menge Python-Dateien auf Ihrem System installieren. Sobald es fertig ist, beginnt es mit dem Zertifikatserstellungsprozess. Zuerst wird es nach Ihrer E-Mail-Adresse fragen:

nginx-letsencrypt-email-address

Danach werden Sie aufgefordert, die Nutzungsbedingungen auf der Let’s Encrypt-Website zu lesen. Wählen Sie “Zustimmen”.

nginx-letsencrypt-read-tos

Wenn Sie die folgende Nachricht sehen:

WICHTIGE HINWEISE:  
 - Herzlichen Glückwunsch! Ihr Zertifikat und die Kette wurden gespeichert unter  
/etc/letsencrypt/live/example.com/fullchain.pem. Ihr Zertifikat  
   läuft am 2016-10-02 ab. Um in Zukunft eine neue oder bearbeitete Version dieses Zertifikats zu erhalten, führen Sie einfach wieder letsencrypt-auto aus.  
   Um *alle* Ihrer Zertifikate nicht-interaktiv zu erneuern, führen Sie  
"letsencrypt-auto renew" aus.  
 - Wenn Ihnen Certbot gefällt, ziehen Sie bitte in Betracht, unsere Arbeit zu unterstützen durch:  
  
   Spenden an ISRG / Let’s Encrypt:   https://letsencrypt.org/donate  
   Spenden an EFF:                    https://eff.org/donate-le

Das bedeutet, dass Sie erfolgreich ein SSL-Zertifikat für Ihre Website(s) generiert haben. Wenn Sie stattdessen eine Fehlermeldung sehen, beheben Sie den Fehler und versuchen Sie es erneut.

Aktivierung des SSL-Zertifikats für Ihre Website

Jetzt, da Sie das SSL-Zertifikat generiert haben, ist es an der Zeit, es für Ihre Website zu aktivieren.

Kehren Sie zum Nginx-Konfigurationsordner zurück und öffnen Sie die Konfigurationsdatei für die Site:

cd /etc/nginx/sites-available  
sudo nano default

Erstellen Sie einen neuen Serverblock und fügen Sie die folgende Konfiguration in den Block ein:

server {  
        server_name example.com www.example.com;  
  
        listen 443 ssl;  
  
        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;  
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;  
}

Speichern und schließen Sie die Datei.

Hinweis: Das obige ist eine vereinfachte Version des Nginx-Konfigurationsblocks. Sie sollten Ihre eigene benutzerdefinierte Konfiguration in den Block einfügen.

Zuletzt testen Sie die Konfiguration:

sudo nginx -t

Wenn alles in Ordnung ist, laden Sie Nginx neu:

sudo service nginx reload

Das war’s. Sie haben erfolgreich ein SSL-Zertifikat für Ihre Websites eingerichtet. Sie können nun die “https”-Version Ihrer URL abrufen, um es in Aktion zu sehen.

Automatische Erneuerung eines Let’s Encrypt SSL-Zertifikats

Im Gegensatz zu den meisten kommerziellen SSL-Zertifikaten, die mindestens ein Jahr gültig sind, ist ein Let’s Encrypt SSL-Zertifikat nur drei Monate gültig. Nach dieser Zeit müssen Sie es erneuern, um es weiterhin verwenden zu können. Let’s Encrypt bietet eine renew-Option, sodass Sie Ihre Zertifikate einfach erneuern können, ohne den gesamten Installationsprozess erneut zu durchlaufen. Die folgenden Anweisungen zeigen Ihnen, wie Sie einen Cron-Job einrichten, um Ihr SSL-Zertifikat automatisch zu erneuern.

Öffnen Sie weiterhin auf Ihrem Server die Crontab:

sudo crontab -e

Fügen Sie die folgenden Zeilen hinzu:

00 0 * * 1 /opt/letsencrypt/letsencrypt-auto renew >> /var/log/le-renew.log  
05 0 * * 1 /etc/init.d/nginx reload

Die obigen Zeilen überprüfen jeden Montag um 12 Uhr die Ablaufdaten Ihrer SSL-Zertifikate und erneuern sie, wenn sie kurz vor dem Ablauf stehen. Es wird auch Nginx um 12:05 Uhr neu laden, um sicherzustellen, dass das erneuerte Zertifikat verwendet wird.

Speichern und schließen Sie die Crontab.

Fazit

Wenn Sie eine kleine Website betreiben und SSL zu Ihrer Website hinzufügen möchten, ist Let’s Encrypt eine großartige Option, um Ihrer Website Glaubwürdigkeit zu verleihen. Es ist (relativ) einfach einzurichten und kostet nichts (kostenlos, wie Bier), daher gibt es keinen Grund, es nicht zu nutzen. Da es jedoch nur ein Domain-validiertes (DV) Zertifikat (die grundlegendste Art von SSL-Zertifikat) anbietet, ist ein kommerzielles SSL-Zertifikat wahrscheinlich der bessere Weg, wenn Unternehmen organisation-validierte (OV) oder erweiterte Validierungs (EV) SSL-Zertifikate benötigen.