In einem früheren Artikel habe ich die Schritte zum Kompilieren des Nginx-Quellcodes mit OpenSSL 1.1.1 erklärt, um das TLS 1.3-Protokoll zu aktivieren, das im August 2018 offiziell veröffentlicht wurde. In diesem Tutorial zeige ich Ihnen eine einfachere Möglichkeit, TLS 1.3 zu aktivieren auf Ubuntu 20.04, 18.04 und 16.04
TLS 1.3 bringt verbesserte Leistung und Sicherheit
In Bezug auf die Leistung benötigt TLS 1.2 zwei Roundtrips, um eine HTTPS-Verbindung herzustellen. Mit TLS 1.3 ist nur ein Roundtrip erforderlich. TLS 1.3 unterstützt auch den Zero-Round-Trip-Modus (0-RTT-Sitzungswiederaufnahme), sodass Clients, die sich zuvor mit Ihrer Website verbunden haben, eine HTTP-Anforderung bei der ersten Nachricht an den Server senden können. Dies macht einen großen Unterschied für Benutzer in Mobilfunknetzen oder an weit entfernten Standorten.
In Bezug auf die Sicherheit hat TLS 1.3 die Unterstützung für alte Cipher Suites entfernt, die für Exploits wie den ROBOT-Angriff verantwortlich sind. Dies ist natürlich eine zu vereinfachte Erklärung. CloudFlare hat eine gute detaillierte Erklärung von TLS 1.3.
Anforderungen zum Aktivieren von TLS 1.3
Es gibt zwei Anforderungen, wenn es darum geht, TLS 1.3 mit Nginx zu aktivieren.
- Ihre Nginx-Version muss TLS 1.3 unterstützen. Das bedeutet Nginx 1.13 oder höher.
- Nginx muss mit OpenSSL 1.1.1 oder höher erstellt werden.
Ubuntu 18.04 und 20.04 werden mit OpenSSL 1.1.1 ausgeliefert
OpenSSL 1.1.1 ist im Ubuntu 18.10- und 20.04-Repository enthalten und das Nginx-Paket aus dem Ubuntu 18.10/20.04-Repository ist mit OpenSSL 1.1.1 erstellt.
Als Ubuntu 18.04 zum ersten Mal herauskam, enthält es nur OpenSSL 1.0.2. OpenSSL 1.1.1 wird jedoch auf Ubuntu 18.04.3 zurückportiert.
Wenn Sie noch Ubuntu 18.04.2 verwenden, führen Sie einfach die folgenden Befehle aus, um auf 18.04.3 zu aktualisieren.
sudo apt update sudo apt upgrade
Installieren Sie die neueste Version von Nginx, die mit OpenSSL 1.1.1 auf Ubuntu 16.04 erstellt wurde
Das Nginx-Paket aus dem Ubuntu 16.04-Repository ist nicht mit OpenSSL 1.1.1 erstellt. Sie können Nginx manuell mit OpenSSL 1.1.1 kompilieren, aber es dauert länger und Sie müssen neu kompilieren, wenn eine neue Version von Nginx herauskommt. Glücklicherweise können wir Nginx aus einem PPA (Personal Package Archive) von Ondřej Surý installieren, der ein Debian-Entwickler und eine wichtige Figur in der DNS-Community ist. Er betreut viele Pakete für das Debian-Repository, einschließlich Apache, BIND, MariaDB, PHP usw. Er ist auch einer der Betreuer des offiziellen certbot PPA. Daher vertraue ich seinem PPA und verwende es auf meinen Servern.
Wenn Sie zuvor ein anderes Nginx-Repository (wie nginx.org) hinzugefügt haben, deaktivieren Sie es. Zum Beispiel habe ich ein anderes Nginx-Repository definiert in /etc/apt/sources.list.d/nginx-repo.list
Datei. Ich kommentiere einfach alle Zeilen in dieser Datei aus, um sie zu deaktivieren.
Um Ondřej Surý Nginx PPA unter Ubuntu hinzuzufügen, führen Sie den folgenden Befehl aus.
sudo add-apt-repository ppa:ondrej/nginx sudo apt update
Entfernen Sie dann Ihr vorhandenes Nginx-Paket. (Ihre Nginx-Konfigurationsdateien werden nicht entfernt.)
sudo apt remove nginx
Wenn Sie iRedMail und Nginx verwenden, führen Sie sudo apt remove nginx-full
aus um Nginx zu entfernen.
Und installieren Sie Nginx von PPA.
sudo apt install nginx
Wenn Sie gefragt werden, ob Sie eine neue Version der Konfigurationsdatei installieren möchten, wählen Sie N
. Ihr Certbot-Nginx-Plug-in wird möglicherweise zusammen mit Nginx entfernt, installieren Sie es also erneut.
sudo apt install python3-certbot-nginx
Überprüfen Sie jetzt die Nginx-Version.
sudo nginx -V
Sie sollten sehen, dass Nginx mit OpenSSL 1.1.1 erstellt wurde.
nginx version: nginx/1.14.1 built with OpenSSL 1.1.1 11 Sep 2018 (running with OpenSSL 1.1.0g 2 Nov 2017) TLS SNI support enabled
Dieses PPA bietet auch OpenSSL 1.1.1 für Ubuntu 16.04. Wenn Ihr Nginx auf Ubuntu 16.04 noch mit OpenSSL 1.1.0 läuft, müssen Sie Ihr OpenSSL-Paket aktualisieren.
sudo apt upgrade
Beachten Sie, dass bei Verwendung der Google-Compute-Engine die folgende Meldung angezeigt wird, während Sie den obigen Befehl ausführen.
The following packages have been kept back: libssl1.1 openssl
Dies liegt daran, dass das OpenSSL 1.1.1-Paket mit einigen Paketen der Google-Compute-Engine in Konflikt steht. Sie müssen den folgenden Befehl ausführen, um OpenSSL zu aktualisieren.
sudo apt dist-upgrade
Aktivieren Sie TLS 1.3 im virtuellen Nginx-Host auf Ubuntu 20.04, 18.04 und 16.04
Sobald Sie Nginx mit OpenSSL 1.1.1 haben, öffnen Sie Ihre virtuelle Nginx-Hostdatei.
sudo nano /etc/nginx/conf.d/site.conf
oder
sudo nano /etc/nginx/sites-enabled/site.conf
Um TLS 1.3 zu aktivieren, fügen Sie einfach TLSv1.3
hinzu zu ssl_protocols
Direktive im SSL-Serverblock.
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
Wenn Sie ein Let’s Encrypt-Zertifikat verwenden, kann Ihre SSL-Konfiguration in /etc/letsencrypt/options-ssl-nginx.conf
festgelegt werden Datei. Übrigens aktiviert certbot standardmäßig TLSv1
, was unsicher ist, können Sie es entfernen. Wenn Sie iRedMail und Nginx verwenden, müssen Sie die SSL-Konfigurationen in /etc/nginx/templates/ssl.tmpl
bearbeiten Datei.
Speichern und schließen Sie die Datei. Starten Sie dann Nginx neu, damit die Änderung wirksam wird.
sudo systemctl restart nginx
Überprüfen der TLS-Version im Webbrowser
Laden Sie mit Firefox 63 oder höher Ihre Webseite neu, klicken Sie mit der rechten Maustaste auf einen leeren Bereich und wählen Sie View Page Info
im Kontextmenü. Gehen Sie zu Security
und Sie sehen, dass TLS 1.3 verwendet wird.
Laden Sie mit Google Chrome 70 oder höher eine Webseite auf Ihrer Website neu. Drücken Sie dann Ctrl+Alt+I
um die Entwicklertools zu öffnen. Gehen Sie zu Security
und Sie sehen, dass TLS 1.3 verwendet wird.
Wird TLSv1.3 zwischen Cloudflare und Ihrem Ursprungsserver verwendet?
Ja. Cloudflare unterstützt TLS 1.3 auf dem Front-End-Server und verwendet auch TLSv1.3, wenn es sich mit Ihrem Ursprungsserver verbindet. Um zu überprüfen, welche TLS-Version verwendet wird, können Sie ein benutzerdefiniertes Protokollformat in /etc/nginx/nginx.conf
erstellen Datei.
sudo nano /etc/nginx/nginx.conf
Fügen Sie den folgenden Text in http
hinzu Kontext.
log_format combined_ssl '$remote_addr - $remote_user [$time_local] ' '$ssl_protocol/$ssl_cipher ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"';
Speichern und schließen Sie die Datei. Fügen Sie dann ein access_log
hinzu Direktive in Ihrem SSL server
Kontext. Das Protokoll befindet sich in combined_ssl
formatieren.
access_log /var/log/nginx/your-site.access.log combined_ssl;
Speichern und schließen Sie die Datei. Laden Sie dann Nginx neu. In der Zugriffsprotokolldatei sehen Sie etwas wie das Folgende, was darauf hinweist, dass TLS 1.3 verwendet wird.
172.68.132.115 - - [25/Feb/2020:16:07:26 +0800] TLSv1.3/TLS_AES_256_GCM_SHA384 "GET / HTTP/1.1"
Nächster Schritt
Ich hoffe, dieses Tutorial hat Ihnen geholfen, TLS 1.3 in Nginx unter Ubuntu 20.04, Ubuntu 18.04 und Ubuntu 16.04 zu aktivieren. Sie können auch die ModSecurity-Firewall für Webanwendungen einrichten, um Ihre Website vor Hackern zu schützen.
- So richten Sie ModSecurity mit Nginx unter Debian/Ubuntu ein
Wenn Sie diesen Beitrag nützlich fanden, abonnieren Sie wie immer unseren kostenlosen Newsletter, um weitere Tipps und Tricks zu erhalten. Pass auf dich auf 🙂