Habilitar TLS 1.3 en Nginx y Apache


1.5.- Como 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.

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.

Comentarios

Entradas populares de este blog

INSTALACION DE SSL EN TOMCAT, JAVA, UTILIZANDO KEYSTORE

SSL COMO GENERAR UN CSR

INSTALACIÓN DE SSL EN ZIMBRA - VIA CLI