GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo habilitar fácilmente TLS 1.3 en Nginx en Ubuntu 20.04, 18.04, 16.04

En un artículo anterior, expliqué los pasos para compilar el código fuente de Nginx con OpenSSL 1.1.1 para habilitar el protocolo TLS 1.3, que se lanzó oficialmente en agosto de 2018. En este tutorial, le mostraré una forma más sencilla de habilitar TLS 1.3 en Ubuntu 20.04, 18.04 y 16.04

TLS 1.3 ofrece rendimiento y seguridad mejorados

En cuanto al rendimiento, TLS 1.2 necesita dos viajes de ida y vuelta para establecer una conexión HTTPS. Con TLS 1.3, solo se requiere un viaje de ida y vuelta. TLS 1.3 también es compatible con el modo de ida y vuelta cero (reanudación de la sesión 0-RTT), lo que permite a los clientes que se han conectado previamente a su sitio web enviar una solicitud HTTP en el primer mensaje al servidor. Esto marca una gran diferencia para los usuarios de redes móviles o en ubicaciones muy distantes.

En términos de seguridad, TLS 1.3 eliminó la compatibilidad con conjuntos de cifrado antiguos, que son responsables de vulnerabilidades como el ataque ROBOT. Esto, por supuesto, es una explicación demasiado simplificada. CloudFlare tiene una buena explicación detallada de TLS 1.3.

Requisitos para habilitar TLS 1.3

Hay dos requisitos cuando se trata de habilitar TLS 1.3 con Nginx.

  1. Su versión de Nginx debe ser compatible con TLS 1.3. Eso significa Nginx 1.13 o superior.
  2. Nginx debe compilarse con OpenSSL 1.1.1 o superior.

Ubuntu 18.04 y 20.04 se envía con OpenSSL 1.1.1

OpenSSL 1.1.1 está incluido en el repositorio de Ubuntu 18.10 y 20.04 y el paquete Nginx del repositorio de Ubuntu 18.10/20.04 está construido con OpenSSL 1.1.1.

Cuando salió Ubuntu 18.04 por primera vez, solo venía con OpenSSL 1.0.2. Sin embargo, OpenSSL 1.1.1 se retroportó a Ubuntu 18.04.3.

Si aún usa Ubuntu 18.04.2, simplemente ejecute los siguientes comandos para actualizar a 18.04.3.

sudo apt update 
sudo apt upgrade

Instalar la última versión de Nginx compilado con OpenSSL 1.1.1 en Ubuntu 16.04

El paquete Nginx del repositorio de Ubuntu 16.04 no está construido con OpenSSL 1.1.1. Puede compilar manualmente Nginx con OpenSSL 1.1.1, pero lleva más tiempo y debe volver a compilar cuando sale una nueva versión de Nginx. Afortunadamente, podemos instalar Nginx desde un PPA (archivo de paquetes personales) de Ondřej Surý, un desarrollador de Debian y una figura importante en la comunidad DNS. Mantiene muchos paquetes para el repositorio de Debian, incluidos Apache, BIND, MariaDB, PHP, etc. También es uno de los mantenedores del PPA oficial de certbot. Así que confío en su PPA y lo uso en mis servidores.

Si ha agregado previamente otro repositorio de Nginx (como nginx.org), desactívelo. Por ejemplo, tengo otro repositorio de Nginx definido en /etc/apt/sources.list.d/nginx-repo.list expediente. Simplemente comento todas las líneas de ese archivo para desactivarlo.

Para agregar Ondřej Surý Nginx PPA en Ubuntu, ejecute el siguiente comando.

sudo add-apt-repository ppa:ondrej/nginx

sudo apt update

Luego elimine su paquete Nginx existente. (Sus archivos de configuración de Nginx no se eliminarán).

sudo apt remove nginx

Si usa iRedMail y Nginx, ejecute sudo apt remove nginx-full para eliminar Nginx.

E instala Nginx desde PPA.

sudo apt install nginx

Cuando se le pregunte si desea instalar una nueva versión del archivo de configuración, elija N . Su complemento certbot Nginx podría eliminarse junto con Nginx, así que vuelva a instalarlo.

sudo apt install python3-certbot-nginx

Ahora comprueba la versión de Nginx.

sudo nginx -V

Debería ver que Nginx está construido con OpenSSL 1.1.1.

nginx version: nginx/1.14.1
built with OpenSSL 1.1.1 11 Sep 2018 (running with OpenSSL 1.1.0g 2 Nov 2017)
TLS SNI support enabled

Este PPA también proporciona OpenSSL 1.1.1 para Ubuntu 16.04. Si su Nginx en Ubuntu 16.04 aún se ejecuta con OpenSSL 1.1.0, debe actualizar su paquete OpenSSL.

sudo apt upgrade

Tenga en cuenta que si está utilizando el motor de cómputo de Google, verá el siguiente mensaje mientras ejecuta el comando anterior.

The following packages have been kept back:
     libssl1.1 openssl

Esto se debe a que el paquete OpenSSL 1.1.1 está en conflicto con algunos paquetes del motor de cómputo de Google. Deberá ejecutar el siguiente comando para actualizar OpenSSL.

sudo apt dist-upgrade

Habilite TLS 1.3 en Nginx Virtual Host en Ubuntu 20.04, 18.04 y 16.04

Una vez que tenga Nginx con OpenSSL 1.1.1, abra su archivo de host virtual Nginx.

sudo nano /etc/nginx/conf.d/site.conf

o

sudo nano /etc/nginx/sites-enabled/site.conf

Para habilitar TLS 1.3, simplemente agregue TLSv1.3 a ssl_protocols directiva en el bloque del servidor SSL.

ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

Si está utilizando el certificado Let's Encrypt, su configuración SSL se puede establecer en /etc/letsencrypt/options-ssl-nginx.conf expediente. Por cierto, certbot habilita de forma predeterminada TLSv1 , que es inseguro, puede eliminarlo. Si está utilizando iRedMail y Nginx, debe editar las configuraciones de SSL en /etc/nginx/templates/ssl.tmpl archivo.

Guarde y cierre el archivo. Luego reinicie Nginx para que el cambio surta efecto.

sudo systemctl restart nginx

Comprobación de la versión de TLS en el navegador web

Con Firefox 63 o superior, vuelva a cargar su página web, haga clic derecho en un área en blanco y seleccione View Page Info en el menú contextual. Ve a Security y verá que se está utilizando TLS 1.3.

Con Google Chrome 70 o superior, vuelva a cargar una página web en su sitio. Luego presiona Ctrl+Alt+I para abrir Herramientas para desarrolladores. Ve a Security y verá que se está utilizando TLS 1.3.

¿Se está utilizando TLSv1.3 entre Cloudflare y su servidor de origen?

Sí. Cloudflare es compatible con TLS 1.3 en el servidor front-end y también usa TLSv1.3 cuando se conecta a su servidor de origen. Para verificar qué versión de TLS se está utilizando, puede crear un formato de registro personalizado en /etc/nginx/nginx.conf archivo.

sudo nano /etc/nginx/nginx.conf

Agrega el siguiente texto en el http contexto.

log_format combined_ssl '$remote_addr - $remote_user [$time_local] '
                  '$ssl_protocol/$ssl_cipher '
                  '"$request" $status $body_bytes_sent '
                  '"$http_referer" "$http_user_agent"';

Guarde y cierre el archivo. Luego agregue un access_log directiva en su SSL server contexto. El registro está en combined_ssl formato.

access_log /var/log/nginx/your-site.access.log combined_ssl;

Guarde y cierre el archivo. Luego recarga Nginx. En el archivo de registro de acceso, verá algo como a continuación, que indica que se está utilizando TLS 1.3.

172.68.132.115 - - [25/Feb/2020:16:07:26 +0800] TLSv1.3/TLS_AES_256_GCM_SHA384 "GET / HTTP/1.1"

Siguiente paso

Espero que este tutorial le haya ayudado a habilitar TLS 1.3 en Nginx en Ubuntu 20.04, Ubuntu 18.04 y Ubuntu 16.04. También es posible que desee configurar el firewall de la aplicación web ModSecurity para proteger su sitio web contra la piratería.

  • Cómo configurar ModSecurity con Nginx en Debian/Ubuntu

Como siempre, si encuentra útil esta publicación, suscríbase a nuestro boletín gratuito para obtener más consejos y trucos. Cuídate 🙂


Ubuntu
  1. Cómo habilitar SSH en Ubuntu 18.04

  2. Cómo habilitar el escritorio remoto de Ubuntu

  3. Cómo comprobar el estado de NGINX en Ubuntu

  4. Cómo habilitar la luz nocturna en Ubuntu 17.10

  5. Ubuntu 20.04 – ¿Cómo habilitar Hwe?

Cómo configurar fácilmente un DNS sobre TLS Resolver con Nginx en Ubuntu

Cómo habilitar TLS 1.3 en Nginx en Ubuntu 18.04 y 16.04

Cómo habilitar el clic para minimizar en Ubuntu

Cómo habilitar el servidor SSH en Ubuntu 22.04

Cómo habilitar TLS 1.3 en Apache y Nginx

Cómo instalar Nginx en Ubuntu 15.04