GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So aktivieren Sie TLS 1.3 in Nginx unter Ubuntu 18.04 und 16.04

HTTPS ist dank der Veröffentlichung von TLS 1.3 durch IETF (RFC 8446) im August 2018 gerade schneller und sicherer geworden. TLS 1.3 ist jetzt die neueste Version des TLS-Protokolls. Dieses Tutorial zeigt Ihnen, wie Sie TLS 1.3 im Nginx-Webserver unter Ubuntu 18.04 und Ubuntu 16.04 aktivieren.

Aktualisieren :Es gibt eine einfachere Möglichkeit, TLS 1.3 zu aktivieren. Siehe diesen Artikel:So aktivieren Sie ganz einfach TLS 1.3 in Nginx unter Ubuntu 18.10, 18.04, 16.04, 14.04

TLS 1.3: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-Anfrage 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. Daher können Serveradministratoren in TLS 1.3 keine alten Cipher Suites mehr hinzufügen, um Benutzer alter Webbrowser zu beruhigen. Dies ist natürlich eine zu vereinfachte Erklärung. CloudFlare hat eine gute detaillierte Erklärung von TLS 1.3.

Aktivieren Sie TLS 1.3 in Nginx auf Ubuntu 18.04, Ubuntu 16.04

Es gibt zwei Anforderungen, wenn es darum geht, TLS 1.3 mit Nginx zu aktivieren.

  1. Ihre Nginx-Version muss TLS 1.3 unterstützen. Das bedeutet nginx 1.13 oder höher.
  2. Nginx muss entweder mit OpenSSL 1.1.1+ erstellt werden oder mit OpenSSL 1.1.1+ ausgeführt werden.

Die zweite Anforderung mag verwirrend klingen, also lassen Sie mich Ihnen zwei Beispiele geben.

  • Ubuntu 18.04 wird mit OpenSSL 1.1.0 ausgeliefert. Das Ersetzen der OpenSSL-Systembibliothek ist keine gute Idee, aber Sie können den OpenSSL 1.1.1-Quellcode herunterladen und Nginx mit dem OpenSSL 1.1.1-Quellcode kompilieren, um TLS 1.3 zu aktivieren.
  • Arch Linux wird derzeit mit OpenSSL 1.1.1 ausgeliefert, aber das Nginx-Paket im Arch-Repository wurde tatsächlich mit OpenSSL 1.1.0 erstellt. In diesem Fall wurde Nginx nicht mit OpenSSL 1.1.1 erstellt, aber es läuft mit OpenSSL 1.1.1.

Sehen wir uns nun an, wie Nginx mit OpenSSL 1.1.1 auf Ubuntu 18.04 und Ubuntu 16.04 kompiliert wird.

1. Hinzufügen des offiziellen Nginx-Repository

Anstatt den Quell-Tarball herunterzuladen und mit make zu kompilieren , werde ich das offizielle Nginx-Repository zu meinem Ubuntu-Server hinzufügen und dann ein Deb-Paket aus dem Quellcode erstellen. Auf diese Weise muss ich nicht manuell eine lange Liste von Konfigurationsparametern zu configure hinzufügen Befehl. Außerdem wird es innerhalb des deb-Pakets eine praktische systemd-Dienstdatei geben.

Rufen Sie zuerst den Nginx-GPG-Schlüssel ab und importieren Sie ihn in Ubuntu.

wget http://nginx.org/keys/nginx_signing.key

sudo apt-key add nginx_signing.key

Erstellen Sie dann eine Quelllistendatei für das Nginx-Repo.

sudo nano /etc/apt/sources.list.d/nginx.list

Fügen Sie die folgenden zwei Zeilen in die Datei ein. Die deb-src line ermöglicht es uns, Nginx-Quellpakete mit apt source herunterzuladen Befehl. Bonic ist der Codename für Ubuntu 18.04. Wenn Sie Ubuntu 16.04 verwenden, ersetzen Sie es durch xenial . (Hinweis:Dieses Repository unterstützt kein 32-Bit-Betriebssystem.)

deb [arch=amd64] http://nginx.org/packages/mainline/ubuntu/ bionic nginx
deb-src http://nginx.org/packages/mainline/ubuntu/ bionic nginx

Um eine Datei im Nano-Texteditor zu speichern, drücken Sie Ctrl+O , und drücken Sie dann zur Bestätigung die Eingabetaste. Drücken Sie zum Beenden Ctrl+X . Aktualisieren Sie dann den lokalen Paketindex.

sudo apt update

Jetzt wird das offizielle Nginx-Repository zum Ubuntu-Server hinzugefügt.

2. Nginx- und OpenSSL-Quellcode herunterladen

Wir werden ein nginx erstellen Verzeichnis unter /usr/local/src/ zum Speichern der Nginx-Quellen und dann cd in dieses Verzeichnis.

sudo mkdir /usr/local/src/nginx
 
cd /usr/local/src/nginx/

Laden Sie das Nginx-Quellpaket mit dem folgenden Befehl herunter:

sudo apt install dpkg-dev

sudo apt source nginx

Sehen Sie sich die heruntergeladenen Dateien an.

ls

Ausgabe:

nginx-1.15.3                               nginx_1.15.3-1~bionic.dsc
nginx_1.15.3-1~bionic.debian.tar.xz        nginx_1.15.3.orig.tar.gz

Klonen Sie dann das OpenSSL-Github-Repository.

cd /usr/local/src

sudo apt install git

sudo git clone https://github.com/openssl/openssl.git

cd openssl

Listen Sie als Nächstes alle Zweige auf und wechseln Sie zum stabilen Zweig 1.1.1.

git branch -a

sudo git checkout OpenSSL_1_1_1-stable

3. Nginx-Kompilierungsregeln bearbeiten

Bearbeiten Sie die Nginx-Kompilierungsregeldatei.

sudo nano /usr/local/src/nginx/nginx-1.15.3/debian/rules

Suchen Sie config.status.nginx: config.env.nginx Sektion. Fügen Sie den folgenden Text am Ende der CFLAGS-Zeile hinzu. Beachten Sie, dass der folgende Text keine eigene Zeile ist.

--with-openssl=/usr/local/src/openssl

Speichern und schließen Sie die Datei.

4. Nginx kompilieren

Stellen Sie sicher, dass Sie sich im Nginx-Quellverzeichnis befinden.

cd /usr/local/src/nginx/nginx-1.15.3/

Installieren Sie Abhängigkeiten, um unser Nginx-Deb-Paket zu erstellen.

sudo apt build-dep nginx

Verwenden Sie nun den folgenden Befehl, um das deb-Paket zu erstellen.

sudo dpkg-buildpackage -b

Wenn Sie den folgenden Fehler sehen,

missing initializer for field 'md_ctrl' of 'EVP_MD {aka const struct evp_md_st}

Bearbeiten Sie dann auto/cc/gcc Datei.

sudo nano /usr/local/src/nginx/nginx-1.15.3/auto/cc/gcc

Kommentieren Sie die folgende Zeile aus. Der -Werror Flag bewirkt, dass GCC Warnungen als Fehler behandelt.

CFLAGS="$CFLAGS -Werror"

Führen Sie dann den Build-Befehl erneut aus. Sobald der Build abgeschlossen ist, gibt es ein Nginx-Deb-Paket in /usr/local/src/nginx/ Verzeichnis. Wenn Sie Nginx bereits installiert haben, ist es an der Zeit, die alte Version zu entfernen und dann die neue Version zu installieren.

sudo apt remove nginx nginx-common nginx-full

cd /usr/local/src/nginx/

sudo dpkg -i nginx_1.15.3-1~bionic_amd64.deb

Starten wir jetzt Nginx.

sudo systemctl start nginx

Wenn Sie die folgende Fehlermeldung sehen.

Failed to start nginx.service: Unit nginx.service is masked.

Demaskieren Sie dann nginx und geben Sie den Startbefehl erneut aus.

sudo systemctl unmask nginx

Beachten Sie, dass der Nginx-Prozess möglicherweise als Benutzer nginx ausgeführt wird oder www-data . Dies kann durch Bearbeiten der ersten Zeile in /etc/nginx/nginx.conf geändert werden Datei. Stellen Sie einfach sicher, dass Nginx als derselbe Benutzer mit PHP-FPM ausgeführt wird.

Überprüfen Sie nun die Konfigurationsargumente von Nginx.

sudo nginx -V

Wie Sie sehen können, haben wir die neueste Version von Nginx, die mit OpenSSL 1.1.1 erstellt wurde.

5. Aktivieren Sie TLS 1.3 im Nginx-Serverblock

Jetzt gehe ich davon aus, dass Sie HTTPS bereits für Ihren Nginx-Serverblock aktiviert haben. Die Syntax zum Aktivieren von TLS 1.3 ist ziemlich einfach. Öffnen Sie Ihre Nginx-Serverblockdatei in /etc/nginx/conf.d/ Verzeichnis oder /etc/nginx/sites-enabled/ Verzeichnis. Suchen Sie die folgende Zeile.

ssl_protocols  TLSv1.2;

Fügen Sie TLSv1.3 hinzu zur Liste der Protokolle.

ssl_protocols TLSv1.2 TLSv1.3;

Fügen Sie dann die folgenden 3 Verschlüsselungssammlungen zu Ihren vorhandenen Verschlüsselungssammlungen hinzu.

TLS-CHACHA20-POLY1305-SHA256
TLS-AES-256-GCM-SHA384
TLS-AES-128-GCM-SHA256

so:

ssl_ciphers 'TLS-CHACHA20-POLY1305-SHA256:TLS-AES-256-GCM-SHA384:TLS-AES-128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';

Speichern und schließen Sie die Datei. Testen Sie dann die Nginx-Konfiguration und laden Sie neu.

sudo nginx -t

sudo systemctl reload nginx

Es ist unwahrscheinlich, dass Ubuntu 18.04 auf OpenSSL 1.1.1 umsteigen würde, also wenn Sie Nginx mit sudo apt upgrade aktualisieren Befehl wird TLS 1.3 weg sein. Es ist eine gute Idee, ein Upgrade von Nginx durch apt zu verhindern mit diesem Befehl:

sudo apt-mark hold nginx

Update:Ab Nginx 1.15.4 können Sie 0-RTT mit OpenSSL aktivieren, indem Sie die folgende Direktive im SSL-Serverkontext hinzufügen. Der Standardwert ist auf off gesetzt . In der vorherigen Version 1.15.3 kann es nur mit BoringSSL verwendet werden.

ssl_early_data on

Aktivieren Sie TLS 1.3 in Google Chrome

Derzeit unterstützen Firefox 62 und Chrome 69 nur Entwurf 28 von TLS 1.3. OpenSSL 1.1.1 unterstützt die endgültige Version von TLS 1.3. Implementierungen, die auf der Entwurfsversion und der endgültigen RFC-Version basieren, interagieren nicht miteinander.

Um unseren Nginx-Server jetzt zu testen, müssen wir die Beta-Version von Google Chrome installieren und die endgültige Version von TLS 1.3 aktivieren. Sobald Sie Chrome Beta installiert haben, geben Sie chrome://flags/#tls13-variant ein in der Adressleiste und wechseln Sie von default zu Enabled (Final) . Starten Sie dann Google Chrome neu, damit die Änderung wirksam wird.

Besuchen Sie jetzt Ihre TLS 1.3-fähige Website in Google Chrome Beta und drücken Sie Ctrl+Shift+I , um die Seite mit den Entwicklertools zu öffnen. Gehen Sie zu Security Tab. Sie können die verwendete TLS-Version sehen.

Firefox soll die endgültige Version von TLS 1.3 in Firefox 63 ausliefern, geplant für Oktober 2018. In Chrome 70 wird die endgültige Version von TLS 1.3 für ausgehende Verbindungen aktiviert.

Update:Chrome 70 hat Unterstützung für die endgültige Version von TLS 1.3 hinzugefügt, verwendet aber standardmäßig immer noch Entwurf 28 von TLS 1.3.

Aktivieren Sie TLS 1.3 mit CloudFlare

Wenn Sie CloudFlare CDN (Content Delivery Network) verwenden, verwendet Ihre Website bereits TLS1.3. Wählen Sie im CloudFlare-Dashboard crypto aus und Sie sehen die Option zum Aktivieren/Deaktivieren von TLS 1.3. Sie können auch 0-RTT aktivieren. CloudFlare unterstützt sowohl die Entwurfsversion 28 als auch die endgültige Version.

Das ist es! Ich hoffe, dieses Tutorial hat Ihnen geholfen, TLS 1.3 in Nginx unter Ubuntu 18.04 und Ubuntu 16.04 zu aktivieren. Pass auf dich auf.


Ubuntu
  1. So aktivieren Sie SSH unter Ubuntu 18.04

  2. So installieren Sie Nginx mit PHP5 und MySQL unter Ubuntu 11.10

  3. Ubuntu 20.04 – Wie aktiviere ich HWE?

  4. So aktivieren Sie HTTP/2 in Nginx unter Ubuntu und CentOS

  5. So aktivieren und deaktivieren Sie Wayland unter Ubuntu

So installieren Sie Docker in Ubuntu 20.04 und führen den Nginx-Container aus

So aktivieren und deaktivieren Sie Netzwerkschnittstellen in Ubuntu 20.04

So aktivieren Sie TLS 1.3 einfach in Nginx unter Ubuntu 20.04, 18.04, 16.04

So aktivieren Sie TLS 1.3 auf Apache und Nginx

So installieren und konfigurieren Sie Nginx in Ubuntu 20.04 und Ubuntu 21.04

So installieren Sie Nginx unter Ubuntu 15.04