Hoe TLS 1.3 in Nginx op Debian 9 in te schakelen

Invoering

TLS 1.3 is een versie van het Transport Layer Security (TLS) -protocol dat in 2018 is gepubliceerd als voorgestelde standaard in RFC 8446 . Het biedt beveiliging en prestatieverbeteringen ten opzichte van zijn voorgangers.

Deze gids legt uit hoe u TLS 1.3 kunt inschakelen met de Nginx-webserver op Debian 9.

Vereisten

  • Nginx-versie 1.13.0of hoger.
  • OpenSSL-versie 1.1.1of hoger.
  • Vultr Cloud Compute (VC2) -instantie met Debian 9 x64 (stretch).
  • Een geldige domeinnaam en correct geconfigureerde A/ AAAA/ CNAMEDNS-records voor uw domein.
  • Een geldig TLS-certificaat. We zullen er een krijgen van Let's Encrypt.

Voordat je begint

Controleer de Debian-versie.

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

Zorg ervoor dat uw systeem up-to-date is.

apt update && apt upgrade -y

Installeer de benodigde pakketten.

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

Maak een nieuw niet-root gebruikersaccount aan met sudotoegang en schakel ernaar.

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

OPMERKING: vervang johndoedoor uw gebruikersnaam.

Stel de tijdzone in.

sudo dpkg-reconfigure tzdata

Installeer de Acme.sh-client en verkrijg een TLS-certificaat van Let's Encrypt

Download en installeer Acme.sh .

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

Controleer de versie.

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

Verkrijg RSA- en ECDSA-certificaten voor uw domein.

# 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

OPMERKING: vervang example.comdoor uw domeinnaam.

Na het uitvoeren van de vorige opdrachten, zijn uw certificaten en sleutels toegankelijk op de volgende locaties:

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

Bouw Nginx vanuit de bron

Nginx heeft ondersteuning voor TLS 1.3 toegevoegd in versie 1.13.0. Op de meeste Linux-distributies, waaronder Debian 9, is Nginx gebouwd met de oudere OpenSSL-versie, die TLS 1.3 niet ondersteunt. Daarom hebben we onze eigen aangepaste Nginx-build nodig die is gekoppeld aan de OpenSSL 1.1.1-release, inclusief ondersteuning voor TLS 1.3.

Download de nieuwste hoofdversie van de Nginx-broncode en pak deze uit.

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

Download de OpenSSL 1.1.1c-broncode en pak deze uit.

# 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

Verwijder alle .tar.gzbestanden, omdat ze niet meer nodig zijn.

rm -rf *.tar.gz

Voer de Nginx-bronmap in.

cd ~/nginx-1.17.0

Configureer, compileer en installeer Nginx. Eenvoudigheidshalve zullen we alleen essentiële modules compileren die nodig zijn om TLS 1.3 te laten werken. Als je een volledige Nginx-build nodig hebt, kun je deze Vultr-handleiding over Nginx-compilatie lezen.

./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

Maak een Nginx-systeemgroep en gebruiker.

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

Symlink /usr/lib/nginx/modulesnaar /etc/nginx/modules. Dit laatste is een standaardplaats voor Nginx-modules.

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

Maak Nginx-cachemappen en stel de juiste rechten in.

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/*

Controleer de Nginx-versie.

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 . . .
# . . .

Maak een Nginx systemd unit-bestand.

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

Vul het bestand in met de volgende configuratie.

[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

Start en schakel Nginx in.

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

Creëer conf.d, sites-availableen sites-enabledmappen /etc/nginx.

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

Voer sudo vim /etc/nginx/nginx.confde volgende twee richtlijnen uit en voeg deze toe aan het einde van het bestand, net voor het sluiten }.

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

Sla het bestand op en sluit af met :+ W+ Q.

Configureer Nginx voor TLS 1.3

Nu we Nginx met succes hebben gebouwd, zijn we klaar om het te configureren om TLS 1.3 op onze server te gaan gebruiken.

Voer sudo vim /etc/nginx/conf.d/example.com.confhet bestand uit en vul het in met de volgende configuratie.

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;
}

Sla het bestand op en sluit af met :+ W+ Q.

Let op de nieuwe TLSv1.3parameter van de ssl_protocolsrichtlijn. Deze parameter is nodig om TLS 1.3 in te schakelen.

Controleer de configuratie.

sudo nginx -t

Herlaad Nginx.

sudo systemctl reload nginx.service

Om TLS 1.3 te verifiëren, kunt u browserontwikkelingshulpmiddelen of SSL Labs-service gebruiken. De onderstaande schermafbeeldingen tonen het beveiligingstabblad van Chrome dat aangeeft dat TLS 1.3 werkt.

Hoe TLS 1.3 in Nginx op Debian 9 in te schakelen

Hoe TLS 1.3 in Nginx op Debian 9 in te schakelen

Gefeliciteerd! U heeft TLS 1.3 met succes ingeschakeld op uw Debian 9-server.



Leave a Comment

Kan AI vechten met toenemend aantal ransomware-aanvallen?

Kan AI vechten met toenemend aantal ransomware-aanvallen?

Ransomware-aanvallen nemen toe, maar kan AI helpen het nieuwste computervirus het hoofd te bieden? Is AI het antwoord? Lees hier weten is AI boezem of vloek

ReactOS: is dit de toekomst van Windows?

ReactOS: is dit de toekomst van Windows?

ReactOS, een open source en gratis besturingssysteem is hier met de nieuwste versie. Kan het voldoen aan de behoeften van moderne Windows-gebruikers en Microsoft uitschakelen? Laten we meer te weten komen over deze oude stijl, maar een nieuwere OS-ervaring.

Blijf verbonden via WhatsApp Desktop-app 24 * 7

Blijf verbonden via WhatsApp Desktop-app 24 * 7

WhatsApp heeft eindelijk de Desktop-app voor Mac- en Windows-gebruikers gelanceerd. Nu heb je eenvoudig toegang tot WhatsApp vanuit Windows of Mac. Beschikbaar voor Windows 8+ en Mac OS 10.9+

Hoe AI procesautomatisering naar een hoger niveau kan tillen?

Hoe AI procesautomatisering naar een hoger niveau kan tillen?

Lees dit om te weten hoe kunstmatige intelligentie populair wordt onder de kleinschalige bedrijven en hoe het de kansen vergroot om ze te laten groeien en hun concurrenten voorsprong te geven.

macOS Catalina 10.15.4 Supplement Update veroorzaakt meer problemen dan het oplost

macOS Catalina 10.15.4 Supplement Update veroorzaakt meer problemen dan het oplost

Onlangs heeft Apple macOS Catalina 10.15.4 uitgebracht, een aanvullende update om problemen op te lossen, maar het lijkt erop dat de update meer problemen veroorzaakt die ertoe leiden dat mac-machines worden gemetseld. Lees dit artikel voor meer informatie

13 Commerciële data-extractietools voor big data

13 Commerciële data-extractietools voor big data

13 Commerciële data-extractietools voor big data

Wat is een logboekbestandssysteem en hoe werkt het?

Wat is een logboekbestandssysteem en hoe werkt het?

Onze computer slaat alle gegevens op een georganiseerde manier op, het zogenaamde Journaling-bestandssysteem. Het is een efficiënte methode waarmee de computer bestanden kan zoeken en weergeven zodra u op zoeken drukt.https://wethegeek.com/?p=94116&preview=true

Technologische singulariteit: een verre toekomst van de menselijke beschaving?

Technologische singulariteit: een verre toekomst van de menselijke beschaving?

Naarmate de wetenschap zich snel ontwikkelt en veel van onze inspanningen overneemt, nemen ook de risico's toe om onszelf te onderwerpen aan een onverklaarbare singulariteit. Lees, wat singulariteit voor ons kan betekenen.

Een inzicht in 26 Big Data-analysetechnieken: deel 1

Een inzicht in 26 Big Data-analysetechnieken: deel 1

Een inzicht in 26 Big Data-analysetechnieken: deel 1

De impact van kunstmatige intelligentie in de gezondheidszorg 2021

De impact van kunstmatige intelligentie in de gezondheidszorg 2021

AI in de zorg heeft de afgelopen decennia grote sprongen gemaakt. De toekomst van AI in de gezondheidszorg groeit dus nog steeds met de dag.