Cómo instalar un certificado SSL gratuito para Nginx en Debian 10


Al configurar un sitio web, una de las consideraciones clave que debe tener en cuenta es la seguridad de su sitio. Un certificado SSL es un certificado digital que cifra los datos que se envían desde el navegador de un usuario a un servidor web. De esta manera, los datos enviados son confidenciales y están a salvo de los piratas informáticos que utilizan rastreadores de paquetes como Wireshark para interceptar y escuchar su comunicación.

Un sitio encriptado tiene un símbolo de candado en la barra de URL seguido del acrónimo https como se muestra en la siguiente captura de pantalla.

Un sitio no cifrado suele tener una notificación de "No seguro" en la barra de URL.

Antes de comenzar, asegúrese de que se hayan cumplido los siguientes requisitos:

  1. Una instancia en ejecución de Debian 10 Minimal Server.
  2. Una instancia en ejecución del servidor web Nginx con configuración de dominio en Debian 10.
  3. Un nombre de dominio totalmente calificado (FQDN) registrado con el registro A apuntando a la dirección IP de Debian 10 en su proveedor de dominio.

Para este tutorial, tenemos tecmint.com apuntado a la dirección IP 192.168.0.104.

En este artículo, examinamos cómo puede instalar Let's Encrypt SSL en Debian 10 para obtener un certificado SSL gratuito para el sitio alojado en Nginx.

Let's Encrypt SSL es un certificado gratuito de EFF (Electronic Frontier Foundation) que es válido por 3 meses y se renueva automáticamente al vencimiento. Es una forma fácil y económica de cifrar su sitio si tiene los bolsillos apretados.

Sin más preámbulos, profundicemos e instalemos Let’s Encrypt en el servidor web Nginx:

Paso 1: Instale Certbot en Debian 10

Para empezar, necesitamos instalar Certbot, un software que obtiene el certificado digital Let's encrypt y luego lo implementa en un servidor web. Para lograr esto, necesitamos instalar el paquete python3-certbot-nginx. Pero antes de hacerlo, primero actualice los paquetes del sistema.

$ sudo apt update

El siguiente paso es instalar las dependencias requeridas por el paquete python3-certbot-nginx.

$ sudo apt install python3-acme python3-certbot python3-mock python3-openssl python3-pkg-resources python3-pyparsing python3-zope.interface

Ahora instalemos el paquete python3-certbot-nginx.

$ sudo apt install python3-certbot-nginx

Paso 2. Verificación de la configuración del bloque del servidor Nginx

Para que certbot se implemente automáticamente Encriptemos el certificado SSL en el servidor web Nginx, es necesario configurar un bloque de servidor. Cubrimos la configuración de los bloques del servidor Nginx en la última sección del artículo anterior.

Si lo siguió con atención, debería tener un bloque de servidor en/etc/nginx/sites-available/some_domain. En nuestro caso, el bloque del servidor Nginx será

/etc/nginx/sites-available/tecmint.com

Además, asegúrese de que la directiva server_name se corresponda con su nombre de dominio.

server_name tecmint.com www.tecmint.com;

Para confirmar que todas las configuraciones de Nginx están en orden, ejecute:

$ sudo nginx -t

El resultado anterior indica que todo está bien.

Paso 3: configurar el cortafuegos para abrir el puerto HTTPS

En caso de que tenga ufw configurado y habilitado, como siempre se recomienda, debemos permitir el protocolo HTTPS a través del firewall para que el servidor web sea accesible para todos.

$ sudo ufw allow 'Nginx Full'

A continuación, vuelva a cargar el cortafuegos para efectuar los cambios.

$ sudo ufw reload

Para verificar que hemos permitido el protocolo a través del firewall.

$ sudo ufw status

Paso 4: Implementación de Let's Encrypt SSL Certificate para dominio

Con todos los ajustes y configuraciones bajo control, es hora de obtener e implementar el certificado SSL de Let's Encrypt en el sitio del dominio.

$ sudo certbot --nginx -d domain-name  -d www.domain-name.com 

En nuestro caso, tendremos

$ sudo certbot --nginx -d tecmint.com -d www.tecmint.com

En el primer paso, se le pedirá que ingrese su dirección de correo electrónico. Escriba su dirección y presione Enter.

A continuación, se le pedirá que acepte los términos del servicio. Escriba A para continuar.

Certbot procederá a solicitar su consentimiento para utilizar su correo electrónico para enviarle notificaciones sobre los últimos desarrollos en EFF. Aquí, puede optar por participar o no participar, para participar, escriba Y (Sí) y presione Entrar. Para rechazar la participación, presione N (No).

Certbot se pondrá en contacto con Let's encrypt, descargará el certificado SSL y lo implementará en el bloque del servidor Nginx que ya creó.

En la siguiente sección, escriba 2 para redirigir el tráfico HTTP habitual a HTTPS.

El certificado se implementará en su servidor Nginx y recibirá una notificación de felicitación para confirmar que su servidor web ahora está encriptado usando Let's Encrypt SSL.

Paso 5: verificar HTTPS en el sitio web de Nginx

Para verificar los cambios a través de un navegador web, actualice la pestaña de su navegador y asegúrese de notar el símbolo del candado.

Haga clic en el icono del candado y seleccione la opción "Certificado" para ver los detalles del certificado SSL.

Se mostrarán todos los detalles del certificado.

Puede verificar aún más el estado de su servidor web probando la URL de su sitio en https://www.ssllabs.com/ssltest/. Si el servidor web está encriptado con un certificado SSL, obtendrá una puntuación A como se muestra.

Hemos llegado al final de este tutorial. En la guía, aprendió cómo instalar un certificado SSL gratuito para Nginx en Debian 10.