Introduksjon
Krav
Før du begynner
Installer Acme.sh-klienten og få et TLS-sertifikat fra Let's Encrypt
Bygg Nginx fra kilden
Konfigurer Nginx for TLS 1.3
Introduksjon
TLS 1.3 er en versjon av Transport Layer Security (TLS)-protokollen publisert i 2018 som en foreslått standard i RFC 8446 . Den tilbyr sikkerhet og ytelsesforbedringer i forhold til forgjengerne.
Denne veiledningen forklarer hvordan du aktiverer TLS 1.3 ved å bruke Nginx-nettserveren på Debian 9.
Krav
- Nginx-versjon
1.13.0eller nyere.
- OpenSSL-versjon
1.1.1eller nyere.
- Vultr Cloud Compute (VC2)-forekomst som kjører Debian 9 x64 (strekk).
- Et gyldig domenenavn og riktig konfigurerte
A/ AAAA/ CNAMEDNS-poster for ditt domene.
- Et gyldig TLS-sertifikat. Vi får en fra Let's Encrypt.
Før du begynner
Sjekk Debian-versjonen.
lsb_release -ds
# Debian GNU/Linux 9.9 (stretch)
Sørg for at systemet ditt er oppdatert.
apt update && apt upgrade -y
Installer de nødvendige pakkene.
apt install -y git unzip curl sudo socat build-essential
Opprett en ny ikke-rootbrukerkonto med sudotilgang og bytt til den.
adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe
MERK: Erstatt johndoemed brukernavnet ditt.
Sett opp tidssonen.
sudo dpkg-reconfigure tzdata
Installer Acme.sh-klienten og få et TLS-sertifikat fra Let's Encrypt
Last ned og installer 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
Sjekk versjonen.
/etc/letsencrypt/acme.sh --version
# v2.8.2
Skaff RSA- og ECDSA-sertifikater for domenet ditt.
# 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
MERK: Erstatt example.commed ditt domenenavn.
Etter å ha kjørt de forrige kommandoene, er sertifikatene og nøklene dine tilgjengelige på følgende steder:
- RSA :
/etc/letsencrypt/example.com
- ECC/ECDSA :
/etc/letsencrypt/example.com_ecc
Bygg Nginx fra kilden
Nginx la til støtte for TLS 1.3 i versjon 1.13.0. På de fleste Linux-distribusjoner, inkludert Debian 9, er Nginx bygget med den eldre OpenSSL-versjonen, som ikke støtter TLS 1.3. Følgelig trenger vi vår egen tilpassede Nginx-bygning knyttet til OpenSSL 1.1.1-utgivelsen, som inkluderer støtte for TLS 1.3.
Last ned den siste hovedversjonen av Nginx-kildekoden og pakk den ut.
wget https://nginx.org/download/nginx-1.17.0.tar.gz && tar zxvf nginx-1.17.0.tar.gz
Last ned OpenSSL 1.1.1c kildekoden og pakk den ut.
# 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
Slett alle .tar.gzfiler, siden de ikke er nødvendige lenger.
rm -rf *.tar.gz
Gå inn i Nginx-kildekatalogen.
cd ~/nginx-1.17.0
Konfigurer, kompiler og installer Nginx. For enkelhets skyld kompilerer vi kun essensielle moduler som kreves for at TLS 1.3 skal fungere. Hvis du trenger en full Nginx-bygg, kan du lese denne 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
Opprett en Nginx-systemgruppe og bruker.
sudo adduser --system --home /nonexistent --shell /bin/false --no-create-home --disabled-login --disabled-password --gecos "nginx user" --group nginx
Symbolkobling /usr/lib/nginx/modulestil /etc/nginx/modules. Sistnevnte er et standardsted for Nginx-moduler.
sudo ln -s /usr/lib/nginx/modules /etc/nginx/modules
Lag Nginx cache-kataloger og angi de riktige tillatelsene.
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/*
Sjekk Nginx-versjonen.
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 . . .
# . . .
Opprett en Nginx systemd enhetsfil.
sudo vim /etc/systemd/system/nginx.service
Fyll filen med følgende konfigurasjon.
[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 og aktiver Nginx.
sudo systemctl start nginx.service
sudo systemctl enable nginx.service
Lag conf.d, sites-availableog sites-enabledkataloger i /etc/nginx.
sudo mkdir /etc/nginx/{conf.d,sites-available,sites-enabled}
Kjør sudo vim /etc/nginx/nginx.confog legg til følgende to direktiver på slutten av filen, rett før avslutningen }.
. . .
. . .
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*.conf;
}
Lagre filen og avslutt med :+ W+ Q.
Nå som vi har bygd Nginx, er vi klare til å konfigurere den til å begynne å bruke TLS 1.3 på serveren vår.
Kjør sudo vim /etc/nginx/conf.d/example.com.confog fyll ut filen med følgende konfigurasjon.
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;
}
Lagre filen og avslutt med :+ W+ Q.
Legg merke til den nye TLSv1.3parameteren i ssl_protocolsdirektivet. Denne parameteren er nødvendig for å aktivere TLS 1.3.
Sjekk konfigurasjonen.
sudo nginx -t
Last inn Nginx på nytt.
sudo systemctl reload nginx.service
For å bekrefte TLS 1.3 kan du bruke nettleserutviklerverktøy eller SSL Labs-tjeneste. Skjermbildene nedenfor viser Chromes sikkerhetsfane som indikerer at TLS 1.3 fungerer.

![Slik aktiverer du TLS 1.3 i Nginx på Debian 9 Slik aktiverer du TLS 1.3 i Nginx på Debian 9]()
Gratulerer! Du har aktivert TLS 1.3 på Debian 9-serveren din.