Letsencrypt

Introducción

Let’s Encrypt es una autoridad de certificación (CA) que proporciona una forma sencilla de obtener e instalar certificados TLS / SSL gratuitos, lo que permite HTTPS encriptado en servidores web. Simplifica el proceso al proporcionar un cliente de software, Certbot, que intenta automatizar la mayoría (si no todos) de los pasos requeridos. 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 obtener un certificado SSL gratuito para Nginx en Debian 10 y configurará su certificado para que se renueve automáticamente.

Este tutorial utilizará un archivo de bloque del servidor Nginx separado en lugar del archivo predeterminado. Recomendamos crear nuevos archivos de bloque del servidor Nginx para cada dominio porque ayuda a evitar errores comunes y mantiene los archivos predeterminados como una configuración alternativa.

Prerrequisitos

Para seguir este tutorial, necesitará:

  • Un servidor Debian 10, configurado siguiendo esta configuración inicial del servidor para Debian 10 tutorial, junto con un sudo usuario no root y un cortafuegos.
  • Un nombre de dominio completamente registrado.
  • Los dos registros DNS siguientes configurados para su servidor. Puede seguir esta introducción al DNS de DigitalOcean para obtener detalles sobre cómo agregarlos.
    • Un disco A con your_domain apuntando a la dirección IP pública de su servidor.
    • Un disco A con www.your_domain apuntando a la dirección IP pública de su servidor.
  • Nginx instalado siguiendo Cómo instalar Nginx en Debian 10. Asegúrese de tener un bloque de servidor para su dominio. Este tutorial utilizará /etc/nginx/sites-available/your_domain como ejemplo.

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.

Instalando el python3-certbot-nginx paquete de los repositorios de Debian nos permitirá instalar y utilizar Cerbot complemento nginx. Trabajar con Python 3 y el python3-certbot-nginx paquete aumenta la longevidad de nuestra configuración: Python 2 será obsoleto para enero de 2020, por lo que nuestra configuración garantiza la compatibilidad con Python 3. Actualmente, Debian 10 es compatible con Python 2 y Python 3.

Antes de instalar el python3-certbot-nginx paquete, actualice su lista de paquetes:

A continuación, instale las dependencias para python3-certbot-nginx paquete, que incluye el python3-acme, python3-certbot, python3-mock, python3-openssl, python3-pkg-resources, python3-pyparsingy python3-zope.interface paquetes:

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

Finalmente, instale el python3-certbot-nginx paquete:

  • sudo apt install python3-certbot-nginx

Certbot ahora está listo para usar, pero para que configure SSL para Nginx, necesitamos verificar parte de la configuración de Nginx.

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

Certbot necesita poder encontrar el correcto server bloquear en su configuración de Nginx para que pueda configurar SSL automáticamente. Específicamente, lo hace buscando un server_name directiva que coincide con el dominio solicitado.

Si siguió el paso de configuración del bloque de servidor en el tutorial de instalación de Nginx, debe tener un bloque de servidor para su dominio en /etc/nginx/sites-available/your_domain con el server_name directiva ya establecida adecuadamente.

Para verificar, abra el archivo de bloqueo del servidor para su dominio usando nano o tu editor de texto favorito:

  • sudo nano /etc/nginx/sites-available/your_domain

Encuentra lo existente server_name línea. Debe tener un aspecto como este:

/ etc / nginx / sites-available / your_domain

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

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

Si no es así, actualícelo para que coincida. Luego guarde el archivo, salga de su editor y verifique la sintaxis de sus ediciones de configuración:

Si recibe un error, vuelva a abrir el archivo de bloqueo del servidor y compruebe 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:

  • sudo systemctl reload nginx

Certbot ahora puede encontrar el correcto server bloquearlo y actualizarlo.

A continuación, actualice el cortafuegos para permitir el tráfico HTTPS.

Paso 3: permitir HTTPS a través del firewall

Si tienes el ufw firewall habilitado, como se recomienda en las guías de requisitos previos, deberá ajustar la configuración para permitir el tráfico HTTPS.

Puede ver la configuración actual escribiendo:

Probablemente se verá así, lo que significa que solo se permite el tráfico HTTP al servidor web:

Output

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Nginx HTTP                 ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

Para permitir el tráfico HTTPS, permita Nginx Full perfilar y eliminar el redundante Nginx HTTP asignación de perfil:

  • sudo ufw allow ‘Nginx Full’
  • sudo ufw delete allow ‘Nginx HTTP’

Su estado ahora debería verse así:

Output

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Nginx Full                 ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx Full (v6)            ALLOW       Anywhere (v6)

A continuación, ejecutemos Certbot y busquemos nuestros certificados.

Paso 4: obtención de un certificado SSL

Certbot proporciona una variedad de formas de obtener certificados SSL a través de complementos. El complemento Nginx se encargará de reconfigurar Nginx y volver a cargar la configuración cuando sea necesario. Para utilizar este complemento, escriba lo siguiente:

  • sudo certbot –nginx -d your_domain -d www.your_domain

Esto corre certbot con el --nginx complemento, usando -d para especificar los nombres para los que nos gustaría que el certificado fuera válido.

Si esta es tu primera vez corriendo certbot, se le pedirá que ingrese una dirección de correo electrónico y acepte los términos del servicio. Después de hacerlo, certbot se comunicará con el servidor Let’s Encrypt y luego ejecutará un desafío para verificar que usted controla el dominio para el que solicita un certificado.

Si tiene éxito, certbot le preguntará cómo le gustaría configurar su HTTPS.

Output

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

Seleccione su elección y luego presione ENTER. La configuración se actualizará y Nginx se volverá a cargar para recuperar la nueva configuración. certbot terminará con un mensaje que le indicará que el proceso fue exitoso y dónde se almacenan sus certificados:

Output

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/your_domain/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/your_domain/privkey.pem
   Your cert will expire on 2019-10-08. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - 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 descargan, instalan y cargan. Intente volver a cargar su sitio web usando https:// y observe el indicador de seguridad de su navegador. Debe indicar que el sitio está debidamente protegido, normalmente con un icono de candado verde. Si prueba su servidor usando el Prueba del servidor SSL Labs, obtendrá un UN grado.

Terminemos probando 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 animar a los usuarios a automatizar su proceso de renovación de certificados. los certbot paquete que instalamos se encarga de esto por nosotros agregando un script de renovación a /etc/cron.d. Esta secuencia de comandos 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 hacer un ensayo con certbot:

  • sudo certbot renew –dry-run

Si no ve ningún error, está todo listo. Cuando sea necesario, Certbot renovará sus certificados y volverá a cargar Nginx para recoger los cambios. Si el proceso de renovación automática falla alguna vez, Let’s Encrypt enviará un mensaje al correo electrónico que especificó, advirtiéndole cuando su 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.

Por itencore