Cómo proteger Nginx con Lets Encrypt en CentOS 8


Fundado en abril de 2016 por Electronic Frontier Foundation (EFF), Let's Encrypt es un certificado digital gratuito y automatizado que proporciona cifrado TLS para sitios web sin ningún costo.

El objetivo del certificado Let's Encrypt es automatizar la validación, creación, firma y renovación automática del certificado de seguridad. Este certificado permite conexiones cifradas a servidores web que utilizan el protocolo HTTPS de una manera sencilla, sin complicaciones y sin complicaciones. El certificado es válido solo por 90 días después de los cuales se puede activar la renovación automática.

Lectura recomendada: Cómo proteger Apache con cifremos el certificado SSL en CentOS 8

En este artículo, demostraremos cómo puede instalar Let's Encrypt para obtener un certificado SSL gratuito para proteger el servidor web Nginx en CentOS 8 (las mismas instrucciones también funcionan en RHEL 8). También te explicaremos cómo renovar tu certificado SSL automáticamente.

Antes, procedemos para asegurarnos de que tiene lo siguiente bajo control.

1. Un nombre de dominio completo (FQDN) que apunta a una dirección IP dedicada del servidor web. Esto debe configurarse en el área de cliente de su proveedor de alojamiento web DNS. Para este tutorial, usamos el nombre de dominio linuxtechwhiz que apunta a la dirección IP 34.70.245.117.

2. También puede confirmar esto realizando una búsqueda hacia adelante usando el comando dig como se muestra.

$ dig linuxtechwhiz.info

3. Nginx instalado y ejecutándose en el servidor web. Puede confirmar esto iniciando sesión en la terminal y ejecutando el siguiente comando. Si Nginx no está instalado, siga nuestro artículo para instalar Nginx en CentOS 8.

$ sudo systemctl status nginx

4. También puede verificar visitando la URL del servidor web en un navegador web.

http://server-IP-or-hostname

A partir de la URL, podemos ver claramente que el sitio no es seguro y, por lo tanto, no está cifrado. Esto implica que cualquier solicitud realizada al servidor web puede ser interceptada, ya que esto incluye información crítica y confidencial como nombres de usuario, contraseñas, números de seguro social e información de tarjetas de crédito, por mencionar algunos.

Ahora ensuciemos nuestras manos e instalemos Let’s Encrypt.

Paso 1. Instale Certbot en CentOS 8

Para instalar el certificado Let’s Encrypt, en primer lugar debe tener instalado certbot. Este es un cliente extensible que obtiene un certificado de seguridad de Let’s Encrypt Authority y le permite automatizar la validación y configuración del certificado para que lo use el servidor web.

Descargue certbot usando el comando curl.

$ sudo curl -O https://dl.eff.org/certbot-auto

A continuación, mueva el certificado al directorio/usr/local/bin.

$ sudo mv certbot-auto /usr/local/bin/certbot-auto

A continuación, asigne permiso de archivo al archivo certbot como se muestra.

$ chmod 0755 /usr/local/bin/certbot-auto

Paso 2. Configurar el bloque del servidor Nginx

Un bloque de servidor en Nginx es el equivalente a un host virtual en Apache. La configuración de bloques de servidor no solo le permite configurar varios sitios web en un servidor, sino que también permite que certbot demuestre la propiedad del dominio ante la autoridad de certificación (CA).

Para crear un bloque de servidor, ejecute el comando que se muestra.

$ sudo vim /etc/nginx/conf.d/www.linuxtechwhiz.info

Asegúrese de reemplazar el nombre de dominio con su propio nombre de dominio. Luego pegue la configuración a continuación.

server {
   server_name www.linuxtechwhiz.info;
   root /opt/nginx/www.linuxtechwhiz.info;

   location / {
       index index.html index.htm index.php;
   }

   access_log /var/log/nginx/www.linuxtechwhiz.info.access.log;
   error_log /var/log/nginx/www.linuxtechwhiz.info.error.log;

   location ~ \.php$ {
      include /etc/nginx/fastcgi_params;
      fastcgi_pass 127.0.0.1:9000;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   }
}

Guarde el archivo y salga del editor de texto.

Paso 3: Instale Lets Encrypt Certificate en CentOS 8

Ahora use el comando certbot para inicializar la obtención y configuración del certificado de seguridad Let's Encrypt.

$ sudo /usr/local/bin/certbot-auto --nginx

Este comando ejecutará e instalará varios paquetes de Python y sus dependencias como se muestra.

A continuación, aparecerá un mensaje interactivo como se muestra a continuación:

Si todo salió bien, debería poder ver un mensaje de felicitación al final.

Para confirmar que su sitio Nginx está encriptado, vuelva a cargar la página web y observe el símbolo del candado al comienzo de la URL. Esto indica que el sitio está protegido mediante un cifrado SSL/TLS.

Para obtener más información sobre el certificado de seguridad, haga clic en el símbolo del candado y seleccione la opción "Certificado".

Se mostrará más información sobre el certificado de seguridad como se muestra a continuación.

Además, para probar la solidez del certificado de seguridad, diríjase a https://www.ssllabs.com/ssltest/ y encuentre un análisis más preciso y profundo del estado del certificado de seguridad.

Paso 4. Renovación del certificado Let's Encrypt

Como vimos anteriormente, el certificado de seguridad solo es válido por una duración de 90 días y debe renovarse antes de su vencimiento.

Puede simular o probar el proceso de renovación del certificado ejecutando el comando:

$ sudo /usr/local/bin/certbot-auto renew --dry-run

Esto concluye este tutorial sobre cómo proteger Nginx con Let's Encrypt en CentOS 8. Let's Encrypt ofrece una forma eficaz y sin complicaciones de proteger su servidor web Nginx que, de otro modo, sería un asunto complejo de realizar manualmente.

Su sitio ahora debería estar completamente encriptado. Unas semanas después de la fecha de vencimiento del certificado, EFF le avisará por correo electrónico para renovar el certificado para evitar la interrupción que pueda surgir debido a un certificado vencido. ¡Eso es todo chicos por hoy!