Hur man aktiverar TLS 1.3 i Nginx på Debian 9

Introduktion

TLS 1.3 är en version av TLS-protokollet (Transport Layer Security) som publicerades 2018 som en föreslagen standard i RFC 8446 . Den erbjuder säkerhet och prestandaförbättringar jämfört med sina föregångare.

Den här guiden förklarar hur du aktiverar TLS 1.3 med Nginx-webbservern på Debian 9.

Krav

  • Nginx-version 1.13.0eller senare.
  • OpenSSL-version 1.1.1eller senare.
  • Vultr Cloud Compute (VC2)-instans som kör Debian 9 x64 (stretch).
  • Ett giltigt domännamn och korrekt konfigurerade A/ AAAA/ CNAMEDNS-poster för din domän.
  • Ett giltigt TLS-certifikat. Vi kommer att få en från Let's Encrypt.

Innan du börjar

Kontrollera Debian-versionen.

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

Se till att ditt system är uppdaterat.

apt update && apt upgrade -y

Installera nödvändiga paket.

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

Skapa ett nytt icke-rootanvändarkonto med sudoåtkomst och byt till det.

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

OBS: Ersätt johndoemed ditt användarnamn.

Ställ in tidszonen.

sudo dpkg-reconfigure tzdata

Installera Acme.sh-klienten och skaffa ett TLS-certifikat från Let's Encrypt

Ladda ner och installera 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 your_email@example.com
cd ~
source ~/.bashrc

Kontrollera versionen.

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

Skaffa RSA- och ECDSA-certifikat för din domän.

# 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

OBS: Ersätt example.commed ditt domännamn.

Efter att ha kört de tidigare kommandona är dina certifikat och nycklar tillgängliga på följande platser:

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

Bygg Nginx från källan

Nginx lade till stöd för TLS 1.3 i version 1.13.0. På de flesta Linux-distributioner, inklusive Debian 9, är Nginx byggd med den äldre OpenSSL-versionen, som inte stöder TLS 1.3. Följaktligen behöver vi vår egen anpassade Nginx-build kopplad till OpenSSL 1.1.1-versionen, som inkluderar stöd för TLS 1.3.

Ladda ner den senaste huvudversionen av Nginx-källkoden och extrahera den.

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

Ladda ner källkoden för OpenSSL 1.1.1c och extrahera den.

# 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

Ta bort alla .tar.gzfiler, eftersom de inte behövs längre.

rm -rf *.tar.gz

Gå in i Nginx källkatalog.

cd ~/nginx-1.17.0

Konfigurera, kompilera och installera Nginx. För enkelhetens skull kommer vi endast att kompilera viktiga moduler som krävs för att TLS 1.3 ska fungera. Om du behöver ett komplett Nginx-bygge kan du läsa den här Vultr-guiden om Nginx-kompilering.

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

Skapa en Nginx-systemgrupp och användare.

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

Symbollänk /usr/lib/nginx/modulestill /etc/nginx/modules. Det senare är en standardplats för Nginx-moduler.

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

Skapa Nginx-cachekataloger och ställ in rätt behörigheter.

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

Kontrollera Nginx-versionen.

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

Skapa en Nginx systemd enhetsfil.

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

Fyll filen med följande 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

Starta och aktivera Nginx.

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

Skapa conf.d, sites-availableoch sites-enabledkataloger i /etc/nginx.

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

Kör sudo vim /etc/nginx/nginx.confoch lägg till följande två direktiv i slutet av filen, strax före stängningen }.

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

Spara filen och avsluta med :+ W+ Q.

Konfigurera Nginx för TLS 1.3

Nu när vi framgångsrikt har byggt Nginx är vi redo att konfigurera den för att börja använda TLS 1.3 på vår server.

Kör sudo vim /etc/nginx/conf.d/example.com.confoch fyll i filen med följande konfiguration.

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

Spara filen och avsluta med :+ W+ Q.

Lägg märke till den nya TLSv1.3parametern i ssl_protocolsdirektivet. Denna parameter är nödvändig för att aktivera TLS 1.3.

Kontrollera konfigurationen.

sudo nginx -t

Ladda om Nginx.

sudo systemctl reload nginx.service

För att verifiera TLS 1.3 kan du använda webbläsarutvecklingsverktyg eller SSL Labs-tjänst. Skärmbilderna nedan visar Chromes säkerhetsflik som indikerar att TLS 1.3 fungerar.

Hur man aktiverar TLS 1.3 i Nginx på Debian 9

Hur man aktiverar TLS 1.3 i Nginx på Debian 9

Grattis! Du har framgångsrikt aktiverat TLS 1.3 på din Debian 9-server.

Lämna en kommentar

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Artificiell intelligens är inte i framtiden, det är här i nuet I den här bloggen Läs hur Artificiell intelligens-applikationer har påverkat olika sektorer.

DDOS-attacker: En kort översikt

DDOS-attacker: En kort översikt

Är du också ett offer för DDOS-attacker och förvirrad över de förebyggande metoderna? Läs den här artikeln för att lösa dina frågor.

Har du någonsin undrat hur hackare tjänar pengar?

Har du någonsin undrat hur hackare tjänar pengar?

Du kanske har hört att hackare tjänar mycket pengar, men har du någonsin undrat hur de tjänar den typen av pengar? låt oss diskutera.

Revolutionerande uppfinningar från Google som gör ditt liv lätt.

Revolutionerande uppfinningar från Google som gör ditt liv lätt.

Vill du se revolutionerande uppfinningar av Google och hur dessa uppfinningar förändrade livet för varje människa idag? Läs sedan till bloggen för att se uppfinningar av Google.

Fredag ​​Essential: Vad hände med AI-drivna bilar?

Fredag ​​Essential: Vad hände med AI-drivna bilar?

Konceptet med att självkörande bilar ska ut på vägarna med hjälp av artificiell intelligens är en dröm vi har ett tag nu. Men trots flera löften finns de ingenstans att se. Läs den här bloggen för att lära dig mer...

Technological Singularity: A Distant Future of Human Civilization?

Technological Singularity: A Distant Future of Human Civilization?

När vetenskapen utvecklas i snabb takt och tar över en hel del av våra ansträngningar, ökar också riskerna för att utsätta oss för en oförklarlig singularitet. Läs, vad singularitet kan betyda för oss.

Funktioner för Big Data Reference Architecture Layers

Funktioner för Big Data Reference Architecture Layers

Läs bloggen för att känna till olika lager i Big Data Architecture och deras funktionaliteter på enklaste sätt.

Utveckling av datalagring – Infographic

Utveckling av datalagring – Infographic

Lagringsmetoderna för data har utvecklats kan vara sedan födelsen av data. Den här bloggen tar upp utvecklingen av datalagring på basis av en infografik.

6 fantastiska fördelar med att ha smarta hemenheter i våra liv

6 fantastiska fördelar med att ha smarta hemenheter i våra liv

I denna digitala värld har smarta hemenheter blivit en avgörande del av livet. Här är några fantastiska fördelar med smarta hemenheter om hur de gör vårt liv värt att leva och enklare.

macOS Catalina 10.15.4 tilläggsuppdatering orsakar fler problem än att lösa

macOS Catalina 10.15.4 tilläggsuppdatering orsakar fler problem än att lösa

Nyligen släppte Apple macOS Catalina 10.15.4, en tilläggsuppdatering för att åtgärda problem, men det verkar som om uppdateringen orsakar fler problem som leder till att mac-datorer blir murade. Läs den här artikeln för att lära dig mer