Let’s Encrypt es una autoridad de certificación (CA) automatizada y abierta operada por Internet Security Research Group (ISRG) y fundada por la Electronic Frontier Foundation (EFF), la Mozilla Foundation y otros. Proporciona certificados SSL/TLS gratuitos que se utilizan comúnmente para cifrar las comunicaciones con fines de seguridad y privacidad, el caso de uso más notable es HTTPS. Let’s Encrypt se basa en el protocolo ACME (Entorno automático de gestión de certificados) para emitir, revocar y renovar certificados. Certbot es una utilidad gratuita y de código abierto que se utiliza principalmente para administrar certificados SSL/TLS de la autoridad de certificación Let’s Encrypt. Está disponible para la mayoría de los sistemas operativos UNIX y similares a UNIX, incluidos GNU/Linux, FreeBSD, OpenBSD y OS X. Esta guía proporcionará una introducción independiente de la plataforma para el uso de certbot.

NOTA: Como certbot es un trabajo en progreso, algunas características o comportamientos descritos en esta guía pueden diferir en versiones anteriores o futuras.

Requisitos

  • Un nombre de dominio registrado con un registro A que apunta a tu dirección IPv4. www.example.com se utilizará como ejemplo.
  • Acceso a un shell privilegiado.

Conceptos generales

Modos de Operación

El uso de certbot para habilitar HTTPS se puede dividir en dos partes: autenticación e instalación. El primero requiere resolver un desafío y guardar el certificado y otros archivos. El paso de instalación implica configurar y asegurar el servidor web. Certbot puede realizar automáticamente ambos, con el subcomando run. Los subcomandos certonly e install son para los pasos de autenticación e instalación respectivamente.

Certbot también incluye características de renovación y revocación de certificados.

Desafíos

Obtener un certificado Let’s Encrypt implica resolver un desafío de validación de dominio emitido por un servidor ACME (Entorno automático de gestión de certificados). Este desafío verifica que eres el propietario de los dominios para los que estás tratando de obtener un certificado. Existen diferentes tipos de desafíos, el más utilizado es HTTP-01. Como su nombre lo indica, utiliza el protocolo HTTP. Si bien los servidores HTTP se pueden configurar para usar cualquier puerto TCP, este desafío solo funcionará en el puerto 80 debido a medidas de seguridad. DNS-01 es otro tipo de desafío menos popular basado en la resolución DNS. Tenga en cuenta que los certificados comodín no se pueden obtener a través del desafío HTTP-01. Esta guía se centrará primordialamente en HTTP-01.

Plugins

Certbot se basa en complementos (plugins) para realizar la autenticación y la instalación. Los complementos como webroot y autónomos solo realizan la autenticación, mientras que otros, como los complementos Apache y Nginx, están diseñados para obtener e instalar automáticamente certificados (es decir, la configuración del servidor web). Otros complementos incluyen varios complementos DNS específicos del proveedor para la autenticación DNS-01. La mayoría de los complementos certbot se instalan por separado, excepto el webroot y los complementos independientes que están integrados.

Instalando Certbot

La mayoría de las distribuciones de Linux proporcionan certbot en sus repositorios oficiales. A continuación se encuentran las instrucciones de instalación para plataformas ampliamente utilizadas.

Debian and Ubuntu:

apt update
apt install -y certbot

CentOS 7:

yum install -y certbot

Fedora and CentOS 8:

dnf install -y certbot

Arch Linux:

pacman -Sy certbot

FreeBSD:

pkg install py36-certbot

OpenBSD 6.0 y posteriores:

pkg_add certbot

MacOS

brew install letsencrypt

Otras plataformas:

Si un paquete certbot no está disponible para su plataforma, puede usar la secuencia de comandos oficial certbot-auto wrapper para instalar certbot automáticamente en su sistema. Se puede descargar desde aquí.

Usando certbot

Listando certificados

Para mostrar una lista de los certificados administrados por certbot en tu servidor, utilice el siguiente comando:

certbot certificates

Obtención de un certificado para la configuración manual

Si elige configurar manualmente su servidor web, puede obtener un certificado de dos maneras. O bien otorgando acceso certbot al directorio raíz web de tu servidor web (es decir, el complemento webroot) o implementando un servidor web independiente temporal en el puerto 80 (es decir, el complemento independiente). El último complemento es útil en los casos en que la integración con su servidor web existente es imposible o no se desea. Para mayor comodidad y renovaciones más simples, sea coherente con el complemento utilizado.

Usar un servidor web existente

Para usar su servidor web existente, asegúrese de que se esté ejecutando y escuchando en el puerto 80 antes de ejecutar el siguiente comando:

certbot certonly --webroot

Se le pedirá que ingrese, entre otra información, su(s) nombre(s) de dominio y la ruta a su raíz web, que es /var/www/html/ por defecto en la mayoría de los sistemas Linux. Alternativamente, puede especificar la información requerida como argumentos del comando. Por ejemplo:

certbot certonly --webroot --webroot-path /var/www/html --agree-tos -m your_email@example.com -d www.example.com

Usando el servidor web independiente

Para utilizar el servidor independiente, primero asegúrese de la disponibilidad del puerto 80. Puede verificar los procesos vinculados a ese puerto usando este comando:

ss -lntp 'sport = 80'

Si es necesario, detenga el servicio/proceso que este usando el puerto 80 antes de continuar. Luego, tipee el siguiente comando:

certbot certonly --standalone

Una vez que se emite el certificado, deberá configurar su servidor web manualmente. Los archivos relevantes se pueden encontrar en /etc/letsencrypt/live/your_domain.

Instalación interactiva HTTPS

Como se mencionó anteriormente, certbot puede automatizar todo el proceso de configuración de HTTPS, incluida la configuración del servidor web. Los complementos están disponibles tanto para Apache como para Nginx y es posible que deban instalarse como un paquete separado. Instale el complemento certbot específico para su servidor web, luego ejecute certbot run --PLUGIN_NAME. Mostraremos todo el proceso para Apache en un sistema Debian 10. El proceso para Nginx es similar.

apt install -y python-certbot-apache
certbot run --apache

Suponiendo que su servidor web ya esté configurado para su(s) nombre(s) de dominio, certbot analizará la configuración existente y le pedirá que elijas para qué nombre(s) de dominio HTTPS debe activarse. Si tu servidor web no está configurado o si certbot no puede detectar sus nombres de dominio, simplemente ingrese sus nombres de dominio manualmente cuando te lo solicite. Por ejemplo:

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: www.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1

Certbot creará un nuevo archivo de configuración de Apache para su nuevo host virtual HTTPS y le preguntará si el tráfico HTTP debe ser redirigido a HTTPS. A menos que tenga buenas razones para no hacerlo, debe habilitar la redirección a HTTPS.

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): 2
Enabled Apache rewrite module
Redirecting vhost in /etc/apache2/sites-enabled/www.example.com.conf to ssl vhost in /etc/apache2/sites-available/www.example.com-le-ssl.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://www.example.com

Renovando certificados

Renovación manual de certificados

Para renovar sus certificados con certbot, puede usar el subcomando renew. Durante la renovación, certbot utilizará los mismos complementos y opciones utilizados para la emisión original. Los certificados solo se renuevan si caducan en menos de 30 días, por lo que este subcomando se puede usar con la frecuencia deseada, ya que no tomará ninguna medida si los certificados no están cerca de su fecha de vencimiento. El comando es simplemente:

certbot renew

Si el complemento independiente se usó para emitir un certificado, deberá detener su servidor web para que la renovación se realice correctamente. Puede lograr eso usando «hooks». Por ejemplo, si el sistema ejecuta Apache, el comando sería:

certbot renew --pre-hook "systemctl stop apache2.service" --post-hook "systemctl start apache2.service"

Renovación automática

Muchas distribuciones han permitido renovaciones automáticas por defecto, ya sea a través de temporizadores systemd o trabajos cron. Puede verificar los temporizadores systemd con:

systemctl list-timers

Y para trabajos cron usando:

ls /etc/cron*

Si el complemento webroot se usó para la emisión, las renovaciones automáticas deberían tener éxito siempre que su servidor web se esté ejecutando. Sin embargo, con el complemento independiente, el comando de renovación automática predeterminado fallará en caso de que se esté ejecutando un servidor web, ya que certbot no podrá vincularse al puerto 80. Por lo tanto, es necesario modificarlo con la adición de ganchos, como se muestra arriba.

Revocando certificados

La revocación de un certificado se puede lograr especificando la ruta o el nombre del certificado:

certbot revoke --cert-name cert_name

O

certbot revoke --cert-name cert_name

Por ejemplo:

certbot revoke --cert-name www.example.net

Después de ejecutar el subcomando revocar, certbot le preguntará si se deben eliminar los archivos de certificado. Si elige no eliminarlos, el certificado revocado se renovará durante la próxima renovación. Se pueden pasar varias opciones autoexplicativas al subcomando revocar:

  • –delete-after-revoke (solicita la elección del usuario por defecto)
  • –no-delete-after-revoke (solicita la elección del usuario por defecto)
  • –reason [sin especificar, compromiso clave, cambio de afiliación, reemplazado, cese de operación] (Predeterminado: sin especificar)

Certificados con comodines

Se puede usar un solo certificado comodín para identificar múltiples subdominios, como una alternativa para separar los certificados regulares. Para obtener un certificado comodín, se debe utilizar el desafío DNS-01. Si bien hay disponibles varios complementos específicos del proveedor que automatizan el proceso de autenticación de ACME, explicaremos el proceso manual y neutral del proveedor. Se necesita acceso a los servidores de nombres para su dominio.

Use el siguiente comando para solicitar un certificado comodín:

certbot certonly --manual --preferred-challenges dns-01 -d *.example.net

Certbot mostrará un valor que debe implementarse en un registro TXT de DNS. Este registro TXT sirve como la validación de propiedad necesaria.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name
_acme-challenge.example.net with the following value:
y77OkxXi89sJLjUgYu-HReYrcVlxt_bfG8yVOVKngBOcU
Before continuing, verify the record is deployed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue

Deberá crear el registro especificado en su panel de control de DNS antes de continuar. Una vez que se crea el registro, espere unos minutos antes de presionar Entrar, lo que activa el servidor ACME para verificarlo. En algunos casos, puede ser necesario un tiempo de espera más largo para que el nuevo registro se propague correctamente y sea accesible. Tras el éxito, el certificado, la cadena y la clave privada se guardarán en /etc/letsencrypt/live/example.com/.

Categorías: Tutorial

0 comentarios

Deja una respuesta

Marcador de posición del avatar

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.