So aktivieren Sie TLS 1.3 in Nginx unter Debian 9

Einführung

TLS 1.3 ist eine Version des TLS-Protokolls (Transport Layer Security), das 2018 als vorgeschlagener Standard in RFC 8446 veröffentlicht wurde . Es bietet Sicherheits- und Leistungsverbesserungen gegenüber seinen Vorgängern.

In diesem Handbuch wird erläutert, wie Sie TLS 1.3 mithilfe des Nginx-Webservers unter Debian 9 aktivieren.

Bedarf

  • Nginx-Version 1.13.0oder höher.
  • OpenSSL-Version 1.1.1oder höher.
  • VC2-Instanz (Vultr Cloud Compute) mit Debian 9 x64 (Stretch).
  • Ein gültiger Domain - Name und richtig konfigurierte A/ AAAA/ CNAMEDNS - Datensätze für Ihre Domain.
  • Ein gültiges TLS-Zertifikat. Wir werden eine von Let's Encrypt bekommen.

Bevor Sie beginnen

Überprüfen Sie die Debian-Version.

lsb_release -ds
# Debian GNU/Linux 9.9 (stretch)

Stellen Sie sicher, dass Ihr System auf dem neuesten Stand ist.

apt update && apt upgrade -y

Installieren Sie die erforderlichen Pakete.

apt install -y git unzip curl sudo socat build-essential

Erstellen Sie ein neues Nicht-Root-Benutzerkonto mit sudoZugriff und wechseln Sie zu diesem.

adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe

HINWEIS: Ersetzen Sie johndoedurch Ihren Benutzernamen.

Richten Sie die Zeitzone ein.

sudo dpkg-reconfigure tzdata

Installieren Sie den Acme.sh-Client und erhalten Sie ein TLS-Zertifikat von Let's Encrypt

Laden Sie Acme.sh herunter und installieren Sie es .

sudo mkdir /etc/letsencrypt
sudo git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh 
sudo ./acme.sh --install --home /etc/letsencrypt --accountemail [email protected]
cd ~
source ~/.bashrc

Überprüfe die Version.

/etc/letsencrypt/acme.sh --version
# v2.8.2

Erhalten Sie RSA- und ECDSA-Zertifikate für Ihre Domain.

# RSA 2048
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --ocsp-must-staple --keylength 2048
# ECDSA
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --ocsp-must-staple --keylength ec-256

HINWEIS: Ersetzen Sie example.comdurch Ihren Domainnamen.

Nach dem Ausführen der vorherigen Befehle können Sie an folgenden Stellen auf Ihre Zertifikate und Schlüssel zugreifen:

  • RSA :/etc/letsencrypt/example.com
  • ECC / ECDSA :/etc/letsencrypt/example.com_ecc

Erstellen Sie Nginx aus der Quelle

Nginx hat TLS 1.3 in Version 1.13.0 unterstützt. Auf den meisten Linux-Distributionen, einschließlich Debian 9, basiert Nginx auf der älteren OpenSSL-Version, die TLS 1.3 nicht unterstützt. Folglich benötigen wir unseren eigenen benutzerdefinierten Nginx-Build, der mit der OpenSSL 1.1.1-Version verknüpft ist und TLS 1.3 unterstützt.

Laden Sie die neueste Hauptversion des Nginx-Quellcodes herunter und extrahieren Sie sie.

wget https://nginx.org/download/nginx-1.17.0.tar.gz && tar zxvf nginx-1.17.0.tar.gz

Laden Sie den OpenSSL 1.1.1c-Quellcode herunter und extrahieren Sie ihn.

# OpenSSL version 1.1.1c
wget https://www.openssl.org/source/openssl-1.1.1c.tar.gz && tar xzvf openssl-1.1.1c.tar.gz

Löschen Sie alle .tar.gzDateien, da sie nicht mehr benötigt werden.

rm -rf *.tar.gz

Geben Sie das Nginx-Quellverzeichnis ein.

cd ~/nginx-1.17.0

Konfigurieren, kompilieren und installieren Sie Nginx. Der Einfachheit halber werden nur wichtige Module kompiliert, die für das Funktionieren von TLS 1.3 erforderlich sind. Wenn Sie einen vollständigen Nginx-Build benötigen, können Sie diese Vultr-Anleitung zur Nginx-Kompilierung lesen .

./configure --prefix=/etc/nginx \
            --sbin-path=/usr/sbin/nginx \
            --modules-path=/usr/lib/nginx/modules \
            --conf-path=/etc/nginx/nginx.conf \
            --error-log-path=/var/log/nginx/error.log \
            --pid-path=/var/run/nginx.pid \
            --lock-path=/var/run/nginx.lock \
            --user=nginx \
            --group=nginx \
            --build=Debian \
            --builddir=nginx-1.17.0 \
            --http-log-path=/var/log/nginx/access.log \
            --http-client-body-temp-path=/var/cache/nginx/client_temp \
            --http-proxy-temp-path=/var/cache/nginx/proxy_temp \
            --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
            --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
            --http-scgi-temp-path=/var/cache/nginx/scgi_temp \
            --with-compat \
            --with-http_ssl_module \
            --with-http_v2_module \
            --with-openssl=../openssl-1.1.1c \
            --with-openssl-opt=no-nextprotoneg \
            --without-http_rewrite_module \
            --without-http_gzip_module

make
sudo make install

Erstellen Sie eine Nginx-Systemgruppe und einen Benutzer.

sudo adduser --system --home /nonexistent --shell /bin/false --no-create-home --disabled-login --disabled-password --gecos "nginx user" --group nginx

Symlink /usr/lib/nginx/moduleszu /etc/nginx/modules. Letzteres ist ein Standardplatz für Nginx-Module.

sudo ln -s /usr/lib/nginx/modules /etc/nginx/modules

Erstellen Sie Nginx-Cache-Verzeichnisse und legen Sie die richtigen Berechtigungen fest.

sudo mkdir -p /var/cache/nginx/client_temp /var/cache/nginx/fastcgi_temp /var/cache/nginx/proxy_temp /var/cache/nginx/scgi_temp /var/cache/nginx/uwsgi_temp
sudo chmod 700 /var/cache/nginx/*
sudo chown nginx:root /var/cache/nginx/*

Überprüfen Sie die Nginx-Version.

sudo nginx -V

# nginx version: nginx/1.17.0 (Debian)
# built by gcc 6.3.0 20170516 (Debian 6.3.0-18+deb9u1)
# built with OpenSSL 1.1.1c  28 May 2019
# TLS SNI support enabled
# configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx . . .
# . . .

Erstellen Sie eine Nginx-Systemd-Einheitendatei.

sudo vim /etc/systemd/system/nginx.service

Füllen Sie die Datei mit der folgenden Konfiguration.

[Unit]
Description=nginx - high performance web server
Documentation=https://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID

[Install]
WantedBy=multi-user.target

Starten und aktivieren Sie Nginx.

sudo systemctl start nginx.service
sudo systemctl enable nginx.service

Erstellen conf.d, sites-availableund sites-enabledVerzeichnisse in /etc/nginx.

sudo mkdir /etc/nginx/{conf.d,sites-available,sites-enabled}

Führen sudo vim /etc/nginx/nginx.confSie die folgenden zwei Anweisungen aus und fügen Sie sie kurz vor dem Schließen am Ende der Datei hinzu }.

    . . .
    . . .
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*.conf;
}

Speichern Sie die Datei und beenden Sie sie mit :+ W+ Q.

Konfigurieren Sie Nginx für TLS 1.3

Nachdem wir Nginx erfolgreich erstellt haben, können wir es so konfigurieren, dass TLS 1.3 auf unserem Server verwendet wird.

Führen Sie sudo vim /etc/nginx/conf.d/example.com.confdie Datei mit der folgenden Konfiguration aus und füllen Sie sie.

server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;

  # RSA
  ssl_certificate /etc/letsencrypt/example.com/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/example.com/example.com.key;
  # ECDSA
  ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/example.com_ecc/example.com.key;

  ssl_protocols TLSv1.2 TLSv1.3;
  ssl_ciphers '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';
  ssl_prefer_server_ciphers on;
}

Speichern Sie die Datei und beenden Sie sie mit :+ W+ Q.

Beachten Sie den neuen TLSv1.3Parameter der ssl_protocolsDirektive. Dieser Parameter ist erforderlich, um TLS 1.3 zu aktivieren.

Überprüfen Sie die Konfiguration.

sudo nginx -t

Laden Sie Nginx neu.

sudo systemctl reload nginx.service

Um TLS 1.3 zu überprüfen, können Sie Browser-Entwicklungstools oder den SSL Labs-Dienst verwenden. Die folgenden Screenshots zeigen die Registerkarte "Sicherheit" von Chrome, die angibt, dass TLS 1.3 funktioniert.

So aktivieren Sie TLS 1.3 in Nginx unter Debian 9

So aktivieren Sie TLS 1.3 in Nginx unter Debian 9

Herzliche Glückwünsche! Sie haben TLS 1.3 auf Ihrem Debian 9-Server erfolgreich aktiviert.



Leave a Comment

Kann KI mit zunehmender Anzahl von Ransomware-Angriffen kämpfen?

Kann KI mit zunehmender Anzahl von Ransomware-Angriffen kämpfen?

Ransomware-Angriffe nehmen zu, aber kann KI helfen, den neuesten Computervirus zu bekämpfen? Ist KI die Antwort? Lesen Sie hier, ob KI boone oder bane ist

ReactOS: Ist das die Zukunft von Windows?

ReactOS: Ist das die Zukunft von Windows?

ReactOS, ein quelloffenes und kostenloses Betriebssystem, ist hier mit der neuesten Version. Kann es den Anforderungen moderner Windows-Benutzer genügen und Microsoft zu Fall bringen? Lassen Sie uns mehr über dieses alte, aber neuere Betriebssystem erfahren.

Bleiben Sie in Verbindung über die WhatsApp Desktop App 24*7

Bleiben Sie in Verbindung über die WhatsApp Desktop App 24*7

Whatsapp hat endlich die Desktop-App für Mac- und Windows-Benutzer auf den Markt gebracht. Jetzt können Sie ganz einfach von Windows oder Mac auf WhatsApp zugreifen. Verfügbar für Windows 8+ und Mac OS 10.9+

Wie kann KI die Prozessautomatisierung auf die nächste Stufe heben?

Wie kann KI die Prozessautomatisierung auf die nächste Stufe heben?

Lesen Sie dies, um zu erfahren, wie Künstliche Intelligenz bei kleinen Unternehmen beliebt wird und wie sie die Wahrscheinlichkeit erhöht, sie wachsen zu lassen und ihren Konkurrenten einen Vorsprung zu verschaffen.

macOS Catalina 10.15.4 Supplement Update verursacht mehr Probleme als sie zu lösen

macOS Catalina 10.15.4 Supplement Update verursacht mehr Probleme als sie zu lösen

Vor kurzem hat Apple macOS Catalina 10.15.4 als Ergänzungsupdate veröffentlicht, um Probleme zu beheben, aber es scheint, dass das Update mehr Probleme verursacht, die zum Bricking von Mac-Computern führen. Lesen Sie diesen Artikel, um mehr zu erfahren

13 Tools zur kommerziellen Datenextraktion von Big Data

13 Tools zur kommerziellen Datenextraktion von Big Data

13 Tools zur kommerziellen Datenextraktion von Big Data

Was ist ein Journaling-Dateisystem und wie funktioniert es?

Was ist ein Journaling-Dateisystem und wie funktioniert es?

Unser Computer speichert alle Daten in einer organisierten Weise, die als Journaling-Dateisystem bekannt ist. Es ist eine effiziente Methode, die es dem Computer ermöglicht, Dateien zu suchen und anzuzeigen, sobald Sie auf die Suche klicken.https://wethegeek.com/?p=94116&preview=true

Technologische Singularität: Eine ferne Zukunft der menschlichen Zivilisation?

Technologische Singularität: Eine ferne Zukunft der menschlichen Zivilisation?

Da sich die Wissenschaft schnell weiterentwickelt und einen Großteil unserer Bemühungen übernimmt, steigt auch das Risiko, uns einer unerklärlichen Singularität auszusetzen. Lesen Sie, was Singularität für uns bedeuten könnte.

Ein Einblick in 26 Big-Data-Analysetechniken: Teil 1

Ein Einblick in 26 Big-Data-Analysetechniken: Teil 1

Ein Einblick in 26 Big-Data-Analysetechniken: Teil 1

Der Einfluss künstlicher Intelligenz im Gesundheitswesen 2021

Der Einfluss künstlicher Intelligenz im Gesundheitswesen 2021

KI im Gesundheitswesen hat in den letzten Jahrzehnten große Fortschritte gemacht. Somit wächst die Zukunft der KI im Gesundheitswesen immer noch von Tag zu Tag.