Requisits
Abans que comencis
Instal·leu el client Acme.sh i obteniu el certificat TLS de Let's Encrypt
Creeu Nginx des de la font
Configureu Nginx per a TLS 1.3
TLS 1.3 és una versió del protocol Transport Layer Security (TLS) que es va publicar el 2018 com a estàndard proposat a RFC 8446 . Ofereix millores de seguretat i rendiment respecte als seus predecessors.
Aquesta guia mostrarà com habilitar TLS 1.3 mitjançant el servidor web Nginx a Ubuntu 18.04 LTS.
Requisits
- Versió Nginx
1.13.0o superior.
- Versió OpenSSL
1.1.1o superior.
- Instància Vultr Cloud Compute (VC2) amb Ubuntu 18.04.
- 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ó d'Ubuntu.
lsb_release -ds
# Ubuntu 18.04.1 LTS
Creeu un non-rootcompte d'usuari nou 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
Assegureu-vos que el vostre sistema estigui actualitzat.
sudo apt update && sudo apt upgrade -y
Instal·lar build-essential, socati gitpaquets.
sudo apt install -y build-essential socat git
Instal·leu el client Acme.sh i obteniu el certificat TLS de Let's Encrypt
Descarregar i instal·lar Acme.sh .
sudo mkdir /etc/letsencrypt
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ó.
acme.sh --version
# v2.8.0
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 les example.comordres pel vostre nom de domini.
Després d'executar les ordres anteriors, podreu accedir als vostres certificats i claus a:
- Per a RSA:
/etc/letsencrypt/example.comdirectori.
- Per a ECC/ECDSA:
/etc/letsencrypt/example.com_eccdirectori.
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, inclòs Ubuntu 18.04, 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.15.5.tar.gz && tar zxvf nginx-1.15.5.tar.gz
Baixeu el codi font d'OpenSSL 1.1.1 i extreu-lo.
# OpenSSL version 1.1.1
wget https://www.openssl.org/source/openssl-1.1.1.tar.gz && tar xzvf openssl-1.1.1.tar.gz
Suprimeix tots els .tar.gzfitxers, ja que ja no seran necessaris.
rm -rf *.tar.gz
Introduïu el directori font de Nginx.
cd ~/nginx-1.15.5
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=Ubuntu \
--builddir=nginx-1.15.5 \
--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.1 \
--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/modulesal /etc/nginx/modulesdirectori. etc/nginx/modulesé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.15.5 (Ubuntu)
# built by gcc 7.3.0 (Ubuntu 7.3.0-27ubuntu1~18.04)
# built with OpenSSL 1.1.1 11 Sep 2018
# TLS SNI support enabled
# configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx . . .
# . . .
Creeu el 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 al /etc/nginxdirectori.
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.
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_prefer_server_ciphers on;
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';
}
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 mostra que TLS 1.3 funciona.

![Com habilitar TLS 1.3 a Nginx a Ubuntu 18.04 LTS Com habilitar TLS 1.3 a Nginx a Ubuntu 18.04 LTS]()
Felicitats! Heu activat correctament TLS 1.3 al vostre servidor web Ubuntu 18.04.