Com habilitar TLS 1.3 a Nginx a Debian 9

Introducció

TLS 1.3 és una versió del protocol Transport Layer Security (TLS) publicat el 2018 com a estàndard proposat a RFC 8446 . Ofereix millores de seguretat i rendiment respecte als seus predecessors.

Aquesta guia explica com habilitar TLS 1.3 mitjançant el servidor web Nginx a Debian 9.

Requisits

  • Versió Nginx 1.13.0o superior.
  • Versió OpenSSL 1.1.1o superior.
  • Instància Vultr Cloud Compute (VC2) que executa Debian 9 x64 (estirament).
  • Un nom de domini vàlid i degudament configurats A/ AAAA/ CNAMEregistres DNS del seu domini.
  • Un certificat TLS vàlid. En obtindrem un de Let's Encrypt.

Abans que comencis

Comproveu la versió de Debian.

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

Assegureu-vos que el vostre sistema estigui actualitzat.

apt update && apt upgrade -y

Instal·leu els paquets necessaris.

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

Creeu un nou compte d'usuari no root amb sudoaccés i canvieu-hi.

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

NOTA: Substituïu-lo johndoepel vostre nom d'usuari.

Configura la zona horària.

sudo dpkg-reconfigure tzdata

Instal·leu el client Acme.sh i obteniu un certificat TLS de Let's Encrypt

Descarregar i instal·lar 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

Comproveu la versió.

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

Obteniu certificats RSA i ECDSA per al vostre domini.

# 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

NOTA: Substituïu-lo example.compel vostre nom de domini.

Després d'executar les ordres anteriors, podreu accedir als vostres certificats i claus a les ubicacions següents:

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

Creeu Nginx des de la font

Nginx va afegir suport per a TLS 1.3 a la versió 1.13.0. A la majoria de distribucions de Linux, inclosa Debian 9, Nginx es construeix amb la versió anterior d'OpenSSL, que no és compatible amb TLS 1.3. En conseqüència, necessitem la nostra pròpia compilació personalitzada de Nginx vinculada a la versió 1.1.1 d'OpenSSL, que inclou suport per a TLS 1.3.

Baixeu la darrera versió principal del codi font de Nginx i extreu-la.

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

Baixeu el codi font d'OpenSSL 1.1.1c i extreu-lo.

# 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

Elimina tots els .tar.gzfitxers, ja que ja no són necessaris.

rm -rf *.tar.gz

Introduïu el directori font de Nginx.

cd ~/nginx-1.17.0

Configureu, compileu i instal·leu Nginx. Per simplificar, compilarem només els mòduls essencials necessaris perquè funcioni TLS 1.3. Si necessiteu una compilació completa de Nginx, podeu llegir aquesta guia Vultr sobre la compilació de Nginx.

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

Creeu un grup i un usuari del sistema Nginx.

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

Enllaç simbòlic /usr/lib/nginx/modulesa /etc/nginx/modules. Aquest últim és un lloc estàndard per als mòduls Nginx.

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

Creeu directoris de memòria cau Nginx i configureu els permisos adequats.

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

Comproveu la versió de Nginx.

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

Creeu un fitxer d'unitat Nginx systemd.

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

Omple el fitxer amb la configuració següent.

[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

Inicieu i activeu Nginx.

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

Crea conf.d, sites-availablei sites-enableddirectoris en /etc/nginx.

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

Executeu sudo vim /etc/nginx/nginx.confi afegiu les dues directives següents al final del fitxer, just abans del tancament }.

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

Deseu el fitxer i sortiu amb :+ W+ Q.

Configureu Nginx per a TLS 1.3

Ara que hem construït Nginx amb èxit, estem preparats per configurar-lo per començar a utilitzar TLS 1.3 al nostre servidor.

Executeu sudo vim /etc/nginx/conf.d/example.com.confi ompliu el fitxer amb la configuració següent.

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

Deseu el fitxer i sortiu amb :+ W+ Q.

Observeu el nou TLSv1.3paràmetre de la ssl_protocolsdirectiva. Aquest paràmetre és necessari per habilitar TLS 1.3.

Comproveu la configuració.

sudo nginx -t

Torna a carregar Nginx.

sudo systemctl reload nginx.service

Per verificar TLS 1.3, podeu utilitzar les eines de desenvolupament del navegador o el servei SSL Labs. Les captures de pantalla següents mostren la pestanya de seguretat de Chrome que indica que TLS 1.3 funciona.

Com habilitar TLS 1.3 a Nginx a Debian 9

Com habilitar TLS 1.3 a Nginx a Debian 9

Felicitats! Heu activat correctament TLS 1.3 al vostre servidor Debian 9.

Deixa un comentari

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

La Intel·ligència Artificial no està en el futur, és aquí mateix en el present. En aquest bloc Llegiu com les aplicacions d'Intel·ligència Artificial han afectat diversos sectors.

Atacs DDOS: una breu visió general

Atacs DDOS: una breu visió general

També ets víctima d'atacs DDOS i estàs confós sobre els mètodes de prevenció? Llegiu aquest article per resoldre les vostres consultes.

Us heu preguntat mai com guanyen diners els pirates informàtics?

Us heu preguntat mai com guanyen diners els pirates informàtics?

Potser haureu sentit que els pirates informàtics guanyen molts diners, però us heu preguntat mai com guanyen aquest tipus de diners? anem a discutir.

Invents revolucionaris de Google que us facilitaran la vida.

Invents revolucionaris de Google que us facilitaran la vida.

Vols veure els invents revolucionaris de Google i com aquests invents van canviar la vida de tots els éssers humans actuals? A continuació, llegiu al bloc per veure els invents de Google.

Divendres essencial: què va passar amb els cotxes impulsats per IA?

Divendres essencial: què va passar amb els cotxes impulsats per IA?

El concepte de cotxes autònoms per sortir a les carreteres amb l'ajuda de la intel·ligència artificial és un somni que tenim des de fa temps. Però malgrat les diverses promeses, no es veuen enlloc. Llegeix aquest blog per saber-ne més...

Singularitat tecnològica: un futur llunyà de la civilització humana?

Singularitat tecnològica: un futur llunyà de la civilització humana?

A mesura que la ciència evoluciona a un ritme ràpid, fent-se càrrec de molts dels nostres esforços, també augmenten els riscos de sotmetre'ns a una singularitat inexplicable. Llegeix, què pot significar per a nosaltres la singularitat.

Funcionalitats de les capes darquitectura de referència de Big Data

Funcionalitats de les capes darquitectura de referència de Big Data

Llegeix el blog per conèixer de la manera més senzilla les diferents capes de l'Arquitectura Big Data i les seves funcionalitats.

Evolució de lemmagatzematge de dades – Infografia

Evolució de lemmagatzematge de dades – Infografia

Els mètodes d'emmagatzematge de les dades que han anat evolucionant poden ser des del naixement de les dades. Aquest bloc tracta l'evolució de l'emmagatzematge de dades a partir d'una infografia.

6 avantatges sorprenents de tenir dispositius domèstics intel·ligents a les nostres vides

6 avantatges sorprenents de tenir dispositius domèstics intel·ligents a les nostres vides

En aquest món digital, els dispositius domèstics intel·ligents s'han convertit en una part crucial de les vides. A continuació, es mostren alguns avantatges sorprenents dels dispositius domèstics intel·ligents sobre com fan que la nostra vida valgui la pena i sigui més senzilla.

Lactualització del suplement de macOS Catalina 10.15.4 està causant més problemes que no pas solucions

Lactualització del suplement de macOS Catalina 10.15.4 està causant més problemes que no pas solucions

Recentment, Apple va llançar macOS Catalina 10.15.4, una actualització de suplements per solucionar problemes, però sembla que l'actualització està causant més problemes que provoquen el bloqueig de les màquines Mac. Llegiu aquest article per obtenir més informació