Com habilitar TLS 1.3 a Apache i Nginx


TLS 1.3 és l'última versió del protocol Transport Layer Security (TLS) i es basa en les especificacions 1.2 existents amb l'estàndard IETF adequat: RFC 8446. Proporciona una seguretat més forta i millores de rendiment superiors respecte als seus predecessors.

En aquest article, us mostrarem una guia pas a pas per obtenir un certificat TLS vàlid i habilitar l'últim protocol de versió TLS 1.3 al vostre domini allotjat als servidors web Apache o Nginx.

  • Apache versió 2.4.37 o posterior.
  • Nginx versió 1.13.0 o superior.
  • OpenSSL versió 1.1.1 o superior.
  • Un nom de domini vàlid amb registres DNS configurats correctament.
  • Un certificat TLS vàlid.

Instal·leu el certificat TLS des de Let's Encrypt

Per obtenir un certificat SSL gratuït de Let's Encrypt, heu d'instal·lar el client Acme.sh i també alguns paquets necessaris al sistema Linux, tal com es mostra.

# apt install -y socat git  [On Debian/Ubuntu]
# dnf install -y socat git  [On RHEL/CentOS/Fedora]
# mkdir /etc/letsencrypt
# git clone https://github.com/Neilpang/acme.sh.git
# cd acme.sh 
# ./acme.sh --install --home /etc/letsencrypt --accountemail [email 
# cd ~
# /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --ocsp-must-staple --keylength 2048
# /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --ocsp-must-staple --keylength ec-256

NOTA: Substituïu example.com a l'ordre anterior pel vostre nom de domini real.

Un cop hàgiu instal·lat el certificat SSL, podeu continuar activant TLS 1.3 al vostre domini tal com s'explica a continuació.

Habiliteu TLS 1.3 a Nginx

Com he esmentat als requisits anteriors, que TLS 1.3 és compatible a partir de la versió Nginx 1.13. Si esteu executant la versió anterior de Nginx, primer heu d'actualitzar a la darrera versió.

# apt install nginx
# yum install nginx

Comproveu la versió de Nginx i la versió d'OpenSSL amb la qual es va compilar Nginx (assegureu-vos que la versió de nginx sigui almenys 1.14 i la versió d'openssl 1.1.1).

# nginx -V
nginx version: nginx/1.14.1
built by gcc 8.2.1 20180905 (Red Hat 8.2.1-3) (GCC) 
built with OpenSSL 1.1.1 FIPS  11 Sep 2018
TLS SNI support enabled
....

Ara inicieu, activeu i verifiqueu la instal·lació de nginx.

# systemctl start nginx.service
# systemctl enable nginx.service
# systemctl status nginx.service

Ara obriu el fitxer de configuració /etc/nginx/conf.d/example.com.conf de nginx vhost mitjançant el vostre editor preferit.

# vi /etc/nginx/conf.d/example.com.conf

i localitzeu la directiva ssl_protocols i afegiu TLSv1.3 al final de la línia tal com es mostra a continuació

server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;

  server_name example.com;

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

Finalment, verifiqueu la configuració i torneu a carregar Nginx.

# nginx -t
# systemctl reload nginx.service

Habiliteu TLS 1.3 a Apache

A partir d'Apache 2.4.37, podeu aprofitar TLS 1.3. Si esteu executant la versió anterior d'Apache, primer haureu d'actualitzar a la darrera versió.

# apt install apache2
# yum install httpd

Un cop instal·lat, podeu verificar l'Apache i la versió d'OpenSSL amb la qual s'ha compilat Apache.

# httpd -V
# openssl version

Ara inicieu, activeu i verifiqueu la instal·lació de nginx.

-------------- On Debian/Ubuntu -------------- 
# systemctl start apache2.service
# systemctl enable apache2.service
# systemctl status apache2.service

-------------- On RHEL/CentOS/Fedora --------------
# systemctl start httpd.service
# systemctl enable httpd.service
# systemctl status httpd.service

Ara obriu el fitxer de configuració de l'amfitrió virtual d'Apache amb el vostre editor preferit.

# vi /etc/httpd/conf.d/vhost.conf
OR
# vi /etc/apache2/apache2.conf

i localitzeu la directiva ssl_protocols i afegiu TLSv1.3 al final de la línia tal com es mostra a continuació.

<VirtualHost *:443>
SSLEngine On

# 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;
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem

     ServerAdmin [email 
     ServerName www.example.com
     ServerAlias example.com
    #DocumentRoot /data/httpd/htdocs/example.com/
    DocumentRoot /data/httpd/htdocs/example_hueman/
  # Log file locations
  LogLevel warn
  ErrorLog  /var/log/httpd/example.com/httpserror.log
  CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/example.com/httpsaccess.log.%Y-%m-%d 86400" combined
</VirtualHost>

Finalment, verifiqueu la configuració i torneu a carregar Apache.

-------------- On Debian/Ubuntu -------------- 
# apache2 -t
# systemctl reload apache2.service

-------------- On RHEL/CentOS/Fedora --------------
# httpd -t
# systemctl reload httpd.service

Verifiqueu que el lloc utilitzi TLS 1.3

Un cop hàgiu configurat a través d'un servidor web, podeu comprovar que el vostre lloc s'està connectant amb el protocol TLS 1.3 mitjançant les eines de desenvolupament del navegador Chrome a la versió Chrome 70+.

Això és tot. Heu activat correctament el protocol TLS 1.3 al vostre domini allotjat als servidors web Apache o Nginx. Si teniu cap pregunta sobre aquest article, no dubteu a fer-ho a la secció de comentaris a continuació.