Cómo habilitar TLS 1.3 en Apache y Nginx
TLS 1.3 es la última versión del protocolo Transport Layer Security (TLS) y se basa en las especificaciones 1.2 existentes con el estándar IETF adecuado: RFC 8446. Proporciona mayor seguridad y mejoras de rendimiento superiores a sus predecesores.
En este artículo, le mostraremos una guía paso a paso para obtener un certificado TLS válido y habilitar la última versión del protocolo TLS 1.3 en su dominio alojado en servidores web Apache o Nginx.
- Apache version 2.4.37 or greater.
- Nginx version 1.13.0 or greater.
- OpenSSL version 1.1.1 or greater.
- A valid domain name with correctly configured DNS records.
- A valid TLS certificate.
Instale el certificado TLS de Let's Encrypt
Para obtener un certificado SSL gratuito de Let’s Encrypt, debe instalar el cliente Acme.sh y también algunos paquetes necesarios en el sistema Linux como se muestra.
# 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 protected] # 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: Reemplace example.com
en el comando anterior con su nombre de dominio real.
Una vez que tenga el certificado SSL instalado, puede continuar para habilitar TLS 1.3 en su dominio como se explica a continuación.
Habilite TLS 1.3 en Nginx
Como mencioné en los requisitos anteriores, TLS 1.3 es compatible a partir de la versión Nginx 1.13. Si está ejecutando la versión anterior de Nginx, primero debe actualizar a la última versión.
# apt install nginx # yum install nginx
Verifique la versión de Nginx y la versión de OpenSSL con la que se compiló Nginx (asegúrese de que la versión de nginx sea al menos 1.14 y la versión 1.1.1 de openssl).
# 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 ....
Ahora comience, habilite y verifique la instalación de nginx.
# systemctl start nginx.service # systemctl enable nginx.service # systemctl status nginx.service
Ahora abra el archivo de configuración de nginx vhost /etc/nginx/conf.d/example.com.conf
usando su editor favorito.
# vi /etc/nginx/conf.d/example.com.conf
y ubique la directiva ssl_protocols
y agregue TLSv1.3 al final de la línea como se muestra a continuación
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; }
Finalmente, verifique la configuración y vuelva a cargar Nginx.
# nginx -t # systemctl reload nginx.service
Habilitar TLS 1.3 en Apache
A partir de Apache 2.4.37, puede aprovechar TLS 1.3. Si está ejecutando la versión anterior de Apache, primero debe actualizar a la última versión.
# apt install apache2 # yum install httpd
Una vez instalado, puede verificar Apache y la versión de OpenSSL con la que se compiló Apache.
# httpd -V # openssl version
Ahora comience, habilite y verifique la instalación 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
Ahora abra el archivo de configuración del host virtual Apache con su editor favorito.
# vi /etc/httpd/conf.d/vhost.conf OR # vi /etc/apache2/apache2.conf
y ubique la directiva ssl_protocols
y agregue TLSv1.3 al final de la línea como se muestra a continuación.
<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 protected] 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>
Finalmente, verifique la configuración y vuelva a cargar Apache.
-------------- On Debian/Ubuntu -------------- # apache2 -t # systemctl reload apache2.service -------------- On RHEL/CentOS/Fedora -------------- # httpd -t # systemctl reload httpd.service
Verifique que el sitio esté usando TLS 1.3
Una vez que lo haya configurado a través de un servidor web, puede verificar que su sitio se comunique con el protocolo TLS 1.3 utilizando las herramientas de desarrollo del navegador Chrome en la versión Chrome 70+.

Eso es todo. Ha habilitado con éxito el protocolo TLS 1.3 en su dominio alojado en servidores web Apache o Nginx. Si tiene alguna pregunta sobre este artículo, no dude en preguntar en la sección de comentarios a continuación.