Habilitar HTTP/2 en Nginx

Utilizando la configuración de Nginx ya explicada en este artículo para esta misma página. Vamos a habilitar el protocolo HTTP/2 para mejorar la eficiencia y la seguridad a la hora de ofrecer la web al usuario final. Empezaremos por editar la configuración de nuestro Virtual Host.

nano /etc/nginx/conf.d/record.rat.la.conf

Una vez dentro, localizamos las siguientes líneas.

listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot

Y las modificamos de esta forma.

listen [::]:443 ssl http2 ipv6only=on; # managed by Certbot
listen 443 ssl http2; # managed by Certbot

Ahora buscamos esta otra línea y la comentamos con un #.

include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot

Justo debajo de la línea comentada agregamos la siguiente.

ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

Guardamos el archivo y comprobamos si la configuración es correcta con nginx -t. Si todo está correcto, editamos o creamos el archivo /etc/nginx/snippets/ssl-params.conf, y localizamos la siguiente línea. —Podría darse el caso en el que el archivo /etc/nginx/snippets/ssl-params.conf esté vacío, o no exista. En ese caso solo tendremos que agregar la línea modificada—.

ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;

Y la modificamos como esta.

ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

Volvemos a comprobar la configuración con nginx -t. Si es correcta, refrescamos la configuración del Nginx.

systemctl reload nginx

Podemos comprobar los cambios con el siguiente comando.

curl -I -L https://record.rat.la

A continuación se muestra un ejemplo de la salida del comando anterior.

HTTP/2 200
server: nginx/1.14.2
date: Sun, 27 Sep 2020 11:46:58 GMT
content-type: text/html; charset=UTF-8
set-cookie: PHPSESSID=huc8hodo8l7qgii3jfbqacoas8; path=/
expires: Thu, 19 Nov 1981 08:52:00 GMT
cache-control: no-store, no-cache, must-revalidate
pragma: no-cache

Ahí se puede apreciar que ahora se está utilizando el protocolo HTTP/2.

Referencias

*   *   *