Introducción
Let’s Encrypt es una autoridad de certificación abierta y automatizada que utiliza el protocolo ACME (Ambiente de Gestión de Certificados Automáticos) para proporcionar certificados TLS/SSL gratuitos a cualquier cliente compatible. Estos certificados pueden ser utilizados para cifrar la comunicación entre su servidor web y sus usuarios. Hay docenas de clientes disponibles, escritos en varios lenguajes de programación, y muchas integraciones con herramientas administrativas populares, servicios y servidores.
El cliente ACME más popular, Certbot, es ahora desarrollado por la Electronic Frontier Foundation. Además de verificar la propiedad del dominio y obtener certificados, Certbot puede configurar automáticamente TLS/SSL en servidores web tanto Apache como Nginx.
Este tutorial discutirá brevemente las autoridades de certificación y cómo funciona Let’s Encrypt, luego revisará algunos clientes ACME populares.
¿Qué es una Autoridad de Certificación?
Las autoridades de certificación (CAs) son entidades que firman criptográficamente certificados TLS/SSL para garantizar su autenticidad. Los navegadores y sistemas operativos tienen una lista de CAs confiables que utilizan para verificar los certificados de los sitios web.
Hasta hace poco, la mayoría de las CAs eran operaciones comerciales que cobraban dinero por sus servicios de verificación y firma. Let’s Encrypt ha hecho este proceso gratuito para los usuarios al automatizar completamente el procedimiento y al depender de patrocinios y donaciones para financiar la infraestructura necesaria.
Para obtener más información sobre certificados y los diferentes tipos de autoridades de certificación, puedes leer “Una Comparación de Let’s Encrypt, Autoridades de Certificación Comerciales y Privadas, y Certificados SSL Auto-Firmados.”
A continuación, veremos cómo Let’s Encrypt realiza la verificación de dominio automatizada.
Cómo Funciona Let’s Encrypt
El protocolo ACME de Let’s Encrypt define cómo los clientes se comunican con sus servidores para solicitar certificados, verificar la propiedad del dominio y descargar certificados. Actualmente está en proceso de convertirse en un estándar oficial de IETF.
Let’s Encrypt ofrece certificados validados de dominio, lo que significa que tienen que verificar que la solicitud de certificado provenga de una persona que realmente controla el dominio. Hacen esto enviando al cliente un token único y luego realizando una solicitud web o DNS para recuperar una clave derivada de ese token.
Por ejemplo, con el desafío basado en HTTP, el cliente calculará una clave a partir del token único y un token de cuenta, luego colocará los resultados en un archivo para ser servido por el servidor web. Los servidores de Let’s Encrypt luego recuperarán el archivo en http://ejemplo.com/.well-known/acme-challenge/token
. Si la clave es correcta, el cliente ha demostrado que puede controlar los recursos en ejemplo.com
, y el servidor firmará y devolverá un certificado.
El protocolo ACME define múltiples desafíos que su cliente puede utilizar para demostrar la propiedad del dominio. El desafío HTTPS es similar al HTTP, excepto que en lugar de un archivo de texto, el cliente aprovisionará un certificado autofirmado con la clave incluida. El desafío DNS busca la clave en un registro TXT de DNS.
El Cliente Certbot de Let’s Encrypt
Certbot es, con mucho, el cliente de Let’s Encrypt más popular. Está incluido en la mayoría de las principales distribuciones de Linux e incluye convenientes capacidades de configuración automática para Apache y Nginx. Una vez instalado, obtener un certificado y actualizar su configuración de Apache puede hacerse de la siguiente manera:
Certbot hará algunas preguntas, ejecutará el desafío, descargará certificados, actualizará la configuración de su Apache y recargará el servidor. Luego debería poder navegar a https://www.example.com
con su navegador web. Aparecerá un candado verde indicando que el certificado es válido y la conexión está cifrada.
Dado que los certificados de Let’s Encrypt solo son válidos durante noventa días, es importante configurar un proceso de renovación automatizado. El siguiente comando renovará todos los certificados en una máquina:
Coloque el comando anterior en un crontab para ejecutarlo todos los días, y los certificados se renovarán automáticamente treinta días antes de que expiren. Si un certificado fue creado inicialmente con las opciones --apache
o --nginx
, Certbot recargará el servidor después de una renovación exitosa.
Si desea obtener más información sobre cron y crontabs, consulte el tutorial “Cómo usar Cron para automatizar tareas“.
Otros Clientes
Dado que el protocolo ACME es abierto y está bien documentado, se han desarrollado muchos clientes alternativos. Let’s Encrypt mantiene una lista de clientes ACME en su sitio web. La mayoría de los otros clientes no tienen las características de configuración automática del servidor web de Certbot, pero tienen otras características que pueden ser de su interés:
- Hay un cliente escrito en casi todos los lenguajes de programación, incluyendo scripts de shell, Go y Node.js. Esto podría ser importante si estás creando certificados en un entorno restringido y preferirías no incluir Python y otras dependencias de Certbot.
- Algunos clientes pueden ejecutarse sin privilegios de root. En general, es una buena idea ejecutar la menor cantidad posible de código con privilegios
- Muchos clientes pueden automatizar el desafío basado en DNS utilizando la API de tu proveedor de DNS para crear automáticamente el registro TXT adecuado. El desafío DNS habilita algunos casos de uso más complicados, como cifrar servidores web que no son accesibles públicamente.
- Algunos clientes están integrados en servidores web, proxies inversos o balanceadores de carga, lo que facilita aún más la configuración e implementación
Algunos de los clientes más populares son:
- lego: Escrito en Go, lego es una instalación binaria de un solo archivo y admite muchos proveedores de DNS cuando se utiliza el desafío DNS
- acme.sh: acme.sh es un script de shell simple que puede ejecutarse en modo no privilegiado y también interactuar con más de 30 proveedores de DNS
- Caddy: Caddy es un servidor web completo escrito en Go con soporte incorporado para Let’s Encrypt.
Hay muchos más clientes disponibles, y muchos otros servidores y servicios están automatizando la configuración de TLS/SSL mediante la integración de soporte para Let’s Encrypt.
Conclusión
Hemos repasado los conceptos básicos de cómo funciona Let’s Encrypt y discutido algunos de los software cliente disponibles. Si desea instrucciones más detalladas sobre cómo usar Let’s Encrypt con varios software, los siguientes tutoriales son un buen punto de partida:
Source:
https://www.digitalocean.com/community/tutorials/an-introduction-to-let-s-encrypt