Paso 1: Instalación de Certbot

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

Nota : actualmente, Certbot no está disponible en los repositorios de software de Debian de forma predeterminada, pero es posible configurar el buster-backportsrepositorio en su /etc/apt/sources.listarchivo para permitirle instalar una versión posterior del software Certbot con APT .

Los backports , sin embargo, son paquetes recompilados de los repositorios inestables y de prueba de Debian que han sido recompilados para ejecutarse en una distribución estable de Debian. Estos paquetes no se prueban regularmente y es posible que no siempre estén actualizados. En consecuencia, el backport de Certbot instalará la versión0.31mientras que la versión actual a partir de este escrito es1.09. Una diferencia notable entre estas versiones de Certbot es que la configuración predeterminada para la versión0.31habilitará TLS v1.0 y TLS v1.1, dos protocolos de seguridad que han quedado obsoletos en la mayoría de los principales navegadores web, y habilitar estos protocolos puede presentar una vulnerabilidad de seguridad. Si bien es posible cambiar este valor predeterminado, hacerlo puede interrumpir las actualizaciones automáticas que hacen que Certbot sea tan útil.

Hasta que una versión más reciente de Certbot esté disponible en los repositorios de Debian APT, este tutorial seguirá la recomendación de instalación de la versión de la documentación de Certbot.1.09con snappy , un administrador de paquetes desarrollado para sistemas Linux que instala paquetes en un formato denominado snaps .

Para instalar Certbot como un complemento en Debian, primero debe haberlo snapdinstalado en su servidor. snapdes un demonio necesario para instalar, usar y administrar instantáneas. La instalación del snapdpaquete también instalará el snapcomando en su servidor.

Para instalar snapd, actualice su índice de paquetes local si no lo ha hecho recientemente:

sudo apt update

Luego instale el snapd:

sudo apt install snapd

Después de ejecutar este comando, se le pedirá que confirme que desea instalar snapdy sus dependencias. Hágalo presionando Yy luego ENTER.

Luego, use el snapcomando para instalar el corecomplemento. Esto instalará algunas dependencias en su servidor que son necesarias para cualquier complemento que instale, incluido el complemento Certbot:

sudo snap install core

Luego actualice el corecomplemento. Si lo hace, se asegurará de tener snapdinstaladas las últimas versiones y sus dependencias:

sudo snap refresh core

Después de eso, puede instalar el certbotcomplemento con el siguiente comando.

Tenga en cuenta que las instantáneas se pueden instalar en uno de los tres niveles de confinamiento que brindan diversos grados de aislamiento de su sistema. Por ejemplo, la mayoría de las instantáneas se instalan en el --strictnivel de confinamiento de manera predeterminada, lo que evita que estos programas accedan a los archivos o la red de su sistema. Debido a que se debe permitir que Certbot edite ciertos archivos de configuración para configurar correctamente los certificados, este comando incluye la --classicopción. Este nivel de confinamiento permite que cualquier instantánea instalada debajo de él tenga el mismo acceso a los recursos del sistema que los paquetes tradicionales:

apt install certbot

Instalación de python3

sudo apt install python3-certbot-apache

Instalación de classic certbot

sudo snap install --classic certbot

Este proceso de instalación instalará el certbotejecutable en el /snap/bin/directorio. Cree un enlace simbólico a este archivo en el /usr/bin/directorio para asegurarse de que puede ejecutar el certbotcomando en cualquier parte de su sistema:

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

Certbot ahora está listo para usar, pero para que configure SSL para Apache, debemos verificar que Apache se haya configurado correctamente.

Paso 2: Configuración del certificado SSL

Certbot necesita poder encontrar el host virtual correcto en su configuración de Apache para configurar automáticamente SSL. Específicamente, lo hace buscando una ServerNamedirectiva que coincida con el dominio para el que solicita un certificado.

Si siguió el paso de configuración del host virtual en el tutorial de instalación de Apache , debería tener un VirtualHostbloque para su dominio con la directiva ya configurada correctamente./etc/apache2/sites-available/your_domain.confServerName

Para verificar, abra el archivo de host virtual para su dominio usando nanosu editor de texto favorito:

sudo nano /etc/apache2/sites-available/your_domain.conf

Encuentra la ServerNamelínea existente. Debería verse así, con su propio nombre de dominio en lugar de your_domain:/etc/apache2/sitios-disponibles/su_dominio.conf

...
ServerName your_domain;
...

Si aún no lo hace, actualice la ServerNamedirectiva para que apunte a su nombre de dominio. Luego guarde el archivo y salga de su editor. Si usó nano, hágalo presionando CTRL + XYy luego ENTER.

A continuación, verifique la sintaxis de sus cambios de configuración:

sudo apache2ctl configtest

Si no hay ningún error de sintaxis, verá esto en su salida:

Output. . .
Syntax OK

Si obtiene un error, vuelva a abrir el archivo de host virtual y verifique que no haya errores tipográficos o que falten caracteres. Una vez que la sintaxis de su archivo de configuración sea correcta, vuelva a cargar Apache para cargar la nueva configuración:

sudo systemctl reload apache2

Certbot ahora puede encontrar el VirtualHostbloque correcto y actualizarlo.

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

Paso 3: Permitir HTTPS a través del cortafuegos

Si tiene ufwhabilitado el firewall, como se recomienda en las guías de requisitos previos, deberá ajustar la configuración para permitir el tráfico HTTPS. Afortunadamente, cuando se instala en Debian, ufwviene con algunos perfiles que ayudan a simplificar el proceso de cambiar las reglas del firewall para el tráfico HTTP y HTTPS.

Puede ver la configuración actual escribiendo:

sudo ufw status

Si siguió el Paso 2 de nuestra guía sobre Cómo instalar Apache en Debian 10 , el resultado de este comando se verá así, mostrando que solo se permite el tráfico HTTP al servidor web:

OutputStatus: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
WWW                        ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
WWW (v6)                   ALLOW       Anywhere (v6)

Para permitir adicionalmente el tráfico HTTPS, permita el perfil «WWW completo» y elimine la asignación de perfil «WWW» redundante:

sudo ufw allow 'WWW Full'
sudo ufw delete allow 'WWW'

Su estado ahora debería verse así:

sudo ufw status

OutputStatus: active

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

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

Paso 4: Obtener un certificado SSL

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

sudo certbot --apache -d your_domain -d www.your_domain

Esto se ejecuta certbotcon el --apachecomplemento y se usa -dpara especificar los nombres para los que desea que el certificado sea válido.

Si es la primera vez que corre certbot, se le pedirá que ingrese una dirección de correo electrónico y acepte los términos del servicio. Además, le preguntará si está dispuesto a compartir su dirección de correo electrónico con Electronic Frontier Foundation , una organización sin fines de lucro que defiende los derechos digitales y también es el fabricante de Certbot. Siéntase libre de ingresar Ypara compartir su dirección de correo electrónico o Npara rechazar.

Después de hacerlo, certbotse comunicará con el servidor Let’s Encrypt, luego ejecutará un desafío para verificar que controla el dominio para el que está solicitando un certificado.

Si eso tiene éxito, la configuración se actualizará automáticamente y Apache se volverá a cargar para recoger la nueva configuración. certbotterminará 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 2021-01-20. 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, generalmente con un ícono de candado verde. Si prueba su servidor utilizando SSL Labs Server Test , obtendrá una calificación A.

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. El certbotpaquete que instalamos 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 de vencimiento.

Para probar el proceso de renovación, puede hacer una prueba con certbot:

sudo certbot renew --dry-run

Conclusión

Si no ve ningún error, ya está todo listo. Cuando sea necesario, Certbot renovará sus certificados y recargará Apache 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.