Cómo proteger Nginx con Let's Encrypt en Ubuntu 18.04

Introducción

Índice
  1. Introducción
  • Prerrequisitos
  • Paso 1: Instalación de Certbot
  • Paso 2: Confirmación de la configuración de Nginx
  • Paso 3: Permitir el uso de HTTPS a través del firewall
  • Paso 4: obtención de un certificado SSL
  • Paso 5: Verificación de la renovación automática de Certbot
  • Conclusión
  • Let's Encrypt es una autoridad de certificación (CA) que ofrece una forma de obtener e instalar certificados TLS/SSL gratuitos, lo que permite el cifrado HTTPS en servidores web. Agiliza el proceso al proporcionar un cliente de software, Certbot, que intenta automatizar la mayoría (si no todos) de los pasos necesarios. Actualmente, todo el proceso de obtención e instalación de un certificado está completamente automatizado tanto en Apache como en Nginx.

    En este tutorial, utilizará Certbot para un certificado SSL gratuito para Nginx en Ubuntu 18.04 y configurará su certificado para que se obtenga automáticamente.

    En este tutorial se utilizará un archivo de bloque de servidor Nginx independiente en lugar del archivo predeterminado. Recomendamos crear nuevos archivos de bloque de servidor Nginx para cada dominio, ya que esto ayuda a evitar errores comunes y mantiene los archivos predeterminados como una configuración de respaldo.

    Prerrequisitos

    Para seguir este tutorial, necesitarás:

    • Un servidor Ubuntu 18.04 configurado siguiendo este tutorial de configuración inicial de servidor para Ubuntu 18.04, incluido un usuario sudo sin root y un firewall.

    • Un nombre de dominio completamente registrado. En este tutorial utilizará your_domain en todo momento. Puedes comprar un nombre de dominio en Namecheap, obtener uno gratis en Freenom o utilizar el registrador de dominios que prefieras.

    • Los siguientes dos registros DNS están configurados para su servidor. Puede consultar esta introducción a DigitalOcean DNS para obtener detalles sobre cómo agregarlos.

      • Un registro A que your_domainapunta a la dirección IP pública de su servidor.
      • Un registro A que apunta a la dirección IP pública de su servidor.www.your_domain
    • Nginx se instala siguiendo Cómo instalar Nginx en Ubuntu 18.04. Asegúrate de tener un bloque de servidor para tu dominio. Nuevamente, este tutorial se utilizará como ejemplo./etc/nginx/sites-available/your_domain

    Paso 1: Instalación de Certbot

    El primer paso para utilizar Let's Encrypt para obtener un certificado SSL es instalar el software Certbot en su servidor.

    El proyecto Certbot recomienda que la mayoría de los usuarios instalen el software a través de snap, un administrador de paquetes desarrollado originalmente por Canonical (la compañía detrás de Ubuntu) y ahora disponible en muchas distribuciones de Linux:

    1. sudo snap install --classic certbot

    Su salida mostrará la versión actual de Certbot y la instalación exitosa:

    Outputcertbot 1.21.0 from Certbot Project (certbot-eff✓) installed

    A continuación, cree un enlace simbólico al /snap/bin/certbotejecutable recién instalado desde el /usr/bin/directorio. Esto garantizará que el certbotcomando pueda ejecutarse correctamente en su servidor. Para ello, ejecute el siguiente lncomando. Este contiene el -sindicador que creará un enlace simbólico o flexible, en lugar de un enlace físico:

    1. sudo ln -s /snap/bin/certbot /usr/bin/certbot

    Certbot ahora está listo para usarse, pero para poder configurar SSL para Nginx, debe verificar parte de la configuración de Nginx.

    Paso 2: Confirmación de la configuración de Nginx

    Certbot debe poder encontrar el serverbloque correcto en la configuración de Nginx para poder configurar SSL automáticamente. En concreto, lo hace buscando una server_namedirectiva que coincida con el dominio para el que solicita un certificado.

    Si siguió el paso de configuración del bloque de servidor recomendado en el tutorial de instalación de Nginx, tendrá un bloque de servidor para su dominio con la directiva ya configurada adecuadamente./etc/nginx/sites-available/your_domainserver_name

    Para comprobarlo, abra el archivo de bloque del servidor de su dominio utilizando nanosu editor de texto favorito:

    1. sudo nano /etc/nginx/sites-available/your_domain

    Busque la server_namelínea existente. Debería versar así:

    /etc/nginx/sitios-disponibles/su_dominio

    ...server_name your_domain www.your_domain;...

    Si es así, salga del editor y continúe con el siguiente paso.

    Si no es así, actualízalo para que coincida. Luego, guarde el archivo y sal del editor. Si estás usando, nanopuedes hacerlo presionando CTRL + Xentonces Yy ENTER.

    Ahora verifique la sintaxis de sus ediciones de configuración:

    1. sudo nginx -t

    Si recibe un error, vuelva a abrir el archivo de bloque del servidor y verifique si hay errores tipográficos o caracteres faltantes. Una vez que la sintaxis de su archivo de configuración sea correcta, vuelva a cargar Nginx para cargar la nueva configuración:

    1. sudo systemctl reload nginx

    Certbot ahora puede encontrar el serverbloque correcto y actualizarlo.

    A continuación, actualizará el firewall para permitir el tráfico HTTPS.

    Paso 3: Permitir el uso de HTTPS a través del firewall

    Si tiene el ufwfirewall habilitado, como lo recomiendan las guías de requisitos anteriores, deberá ajustar la configuración para permitir el tráfico HTTPS. Afortunadamente, Nginx registra algunos perfiles al ufwmomento de la instalación.

    Puede comprobar la configuración actual ejecutando lo siguiente:

    1. sudo ufw status

    Debería recibir un resultado como éste, indicando que solo se permite el tráfico HTTP al servidor web:

    OutputStatus: activeTo                         Action      From--                         ------      ----OpenSSH                    ALLOW       Anywhere                  Nginx HTTP                 ALLOW       Anywhere                  OpenSSH (v6)               ALLOW       Anywhere (v6)             Nginx HTTP (v6)            ALLOW       Anywhere (v6)

    Para permitir el ingreso de tráfico HTTPS adicional, habilite el perfil completo de Nginx y elimine la asignación redundante del perfil HTTP de Nginx:

    1. sudo ufw allow 'Nginx Full'
    2. sudo ufw delete allow 'Nginx HTTP'

    Ahora, cuando ejecute el ufw statuscomando, se reflejarán estas nuevas reglas:

    1. sudo ufw status
    OutputStatus: activeTo                         Action      From--                         ------      ----OpenSSH                    ALLOW       AnywhereNginx Full                 ALLOW       AnywhereOpenSSH (v6)               ALLOW       Anywhere (v6)Nginx Full (v6)            ALLOW       Anywhere (v6)

    A continuación, ejecutará Certbot y obtendrá sus certificados.

    Paso 4: obtención de un certificado SSL

    Certbot ofrece una variedad de formas de obtener certificados SSL a través de complementos. El complemento Nginx se encargará de reconfigurar Nginx y recargar la configuración cuando sea necesario. Para usar este complemento, ejecute lo siguiente:

    1. sudo certbot --nginx -d your_domain -d your_domain

    Esto se ejecuta certbotcon el --nginxcomplemento, que se utiliza -dpara especificar los nombres para los cuales desea que sea válido el certificado.

    Si es la primera vez que ejecuta certbot, se le solicitará que ingrese una dirección de correo electrónico y que acepte los términos del servicio. Luego de hacerlo, certbotse comunicará con el servidor Let's Encrypt para solicitar un certificado para su dominio. Si lo hace correctamente, recibirás el siguiente resultado:

    OutputSuccessfully received certificate.Certificate is saved at: /etc/letsencrypt/live/your_domain/fullchain.pemKey is saved at:         /etc/letsencrypt/live/your_domain/privkey.pemThis certificate expires on 2022-01-27.These files will be updated when the certificate renews.Certbot has set up a scheduled task to automatically renew this certificate in the background.Deploying certificateSuccessfully deployed certificate for your_domain to /etc/nginx/sites-enabled/your_domainSuccessfully deployed certificate for www.your_domain to /etc/nginx/sites-enabled/your_domainCongratulations! You have successfully enabled HTTPS on https://your_domain and https://www.your_domain- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -If you like Certbot, please consider supporting our work by: * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate * Donating to EFF:                    https://eff.org/donate-le- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Sus certificados se han descargado, instalado y cargado. Intente volver a cargar su sitio web utilizando https://y observe el indicador de seguridad de su navegador. Debería indicar que el sitio está protegido correctamente, generalmente con un ícono de candado verde. Si prueba su servidor utilizando la Prueba de servidor de SSL Labs, obtendrá una calificación A.

    Ahora que ha obtenido su certificado SSL, el paso final es probar el proceso de renovación.

    Paso 5: Verificación de la renovación automática de Certbot

    Los certificados de Let's Encrypt solo son válidos durante noventa días. Esto es para alentar a los usuarios a automatizar el proceso de renovación de sus certificados. El certbotpaquete que instalaste se encarga de esto agregando un script de renovación a /etc/cron.d. Este script se ejecuta dos veces al día y renovará automáticamente cualquier certificado que esté dentro de los treinta días posteriores a su vencimiento.

    Para probar el proceso de renovación, puede realizar un ensayo con certbot:

    1. sudo certbot renew --dry-run

    Si no recibes ningún error, ya estás listo. Cuando sea necesario, Certbot renovará tus certificados y recargará Nginx para que se apliquen los cambios. Si el proceso de renovación automática falla, Let's Encrypt enviará un mensaje al correo electrónico que especificaste para avisarte cuando tu certificado esté a punto de caducar.

    Conclusión

    En este tutorial, instaló el cliente Let's Encrypt certbot, descargó certificados SSL para su dominio, configuró Nginx para usar estos certificados y configuró la renovación automática de certificados. Si tiene más preguntas sobre el uso de Certbot, su documentación es un buen lugar para comenzar.

    SUSCRÍBETE A NUESTRO BOLETÍN 
    No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Subir

    Este sitio web utiliza cookies para mejorar tu experiencia mientras navegas por él. Este sitio web utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando, aceptas su uso. Mas informacion