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 bcSobald installiert, klonen Sie das Let’s Encrypt Repository:
sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencryptDie 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 defaultFü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 -tWenn alles in der Konfiguration in Ordnung ist, laden Sie die Konfiguration neu:
sudo service nginx reloadEin 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/letsencryptFühren Sie den folgenden Befehl aus, um das Zertifikat zu generieren:
./letsencrypt-auto certonly -a webroot --webroot-path=/usr/share/nginx/html -d example.comEs gibt ein paar Dinge zu ändern:
- Ändern Sie den
webroot-pathauf 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.comam 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.comBeim 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:

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

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-leDas 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 defaultErstellen 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 -tWenn alles in Ordnung ist, laden Sie Nginx neu:
sudo service nginx reloadDas 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 -eFü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 reloadDie 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.