Cómo obtener certificados SSL gratis con Let's Encrypt

Aprende a proteger tu sitio web con los certificados SSL gratis de Let's Encrypt usando el protocolo ACME, automatizando la emisión de certificados a través de desafíos HTTP y DNS.

Let’s Encrypt es una Autoridad Certificadora (CA) gratis, abierta y automatizada que se utiliza para emitir certificados SSL mediante el protocolo ACME (Automatic Certificate Management Environment). Los certificados SSL son un componente crucial para la seguridad de aplicaciones web y el éxito de un sitio web, ya que permiten la transferencia segura de datos mediante HTTPS. El HTTPS no solo aumenta el posicionamiento de un sitio en los motores de búsqueda y la confianza de los usuarios, sino que también permite el uso del protocolo HTTP/2, lo que resulta en mejoras significativas de desempeño en comparación con HTTP/1.

Para usar su propio dominio HTTPS, los usuarios pueden subir su propio certificado SSL. Sin embargo, para obtener un certificado SSL, los usuarios deben usar una CA como Let’s Encrypt para validar la identidad del servidor y emitir un certificado que vincule la identidad con la clave pública del servidor. Este artículo guiará a los lectores a través del proceso, desde la instalación y configuración del software necesario hasta la emisión de certificados mediante ambos tipos de desafío HTTP y DNS.

¿Qué es ACME y cómo funciona?

Let’s Encrypt utiliza el protocolo ACME (Automatic Certificate Management Environment) para verificar si controlas un nombre de dominio determinado y emitir un certificado. Con ACME, el proceso de obtención de un certificado SSL está completamente automatizado, lo que mejora la seguridad al reducir la posibilidad de error y permite que Let’s Encrypt ofrezca certificados validados por dominio gratis.

ACME permite que los agentes de software en servidores HTTPS obtengan, provisionen y renueven certificados automáticamente, sin interacción humana. Sin embargo, antes de que el cliente solicitante pueda gestionar el certificado, primero debe demostrar que controla el dominio. Primero, el agente solicitante envía la clave pública para su servidor y pregunta a la CA de Let’s Encrypt qué necesita hacer para demostrar que controla el dominio. La CA proporcionará una lista de desafíos que el cliente puede completar para validar el control del dominio y un token, que el cliente debe firmar con su par de claves privadas.

Después de que el cliente completa los desafíos, el cliente firma el token con su clave privada para demostrar que controla el par de claves y notifica a la CA que está listo para completar la validación. Una vez que la CA asegura que el desafío está completo y verifica la firma, el agente está autorizado para la gestión de certificados usando el par de claves.

Para obtener un certificado, el agente construye una Solicitud de Firma de Certificado PKCS#10 (CSR) pidiendo a la CA que emita un certificado para el dominio utilizando una clave pública específica, acompañada por la firma de la clave privada correspondiente y la firma del par de claves autorizado para el dominio. Después de verificar ambas firmas, la CA emite un certificado para el dominio con la clave pública del CSR.

Instalación y configuración de acme.sh

Para obtener un certificado Let’s Encrypt, necesitarás elegir un software cliente ACME. Uno de los softwares cliente ACME recomendados y mantenidos por la comunidad es acmesh, que implementa el protocolo ACME en script shell Unix puro y por lo tanto es compatible con múltiples plataformas (como Mac OSX, Windows, FreeBSD, Solaris y muchas distribuciones Linux).

Al usar acme.sh, es posible emitir y renovar certificados utilizando ambos tipos de desafío HTTP y DNS. Acme.sh está listo para IPv6 y es fácil de usar. Aunque GitHub brinda métodos de instalación extra, este tutorial te guiará a través de la instalación y configuración mediante el comando curl.

Acme.sh puede instalarse en el mismo servidor de origen que tu aplicación o en un servidor reservado para ejecutar este servicio. El comando curl para la instalación es:

curl https://get.acme.sh | sh -s email=tu.correo@ejemplo.com
source ~/.bashrc

La instalación puede verificarse mediante el comando:

acme.sh --version
v2.8.1

Después de instalar acme.sh, puedes configurarlo para usar Let’s Encrypt como una CA (Autoridad Certificadora) con el comando:

acme.sh --set-default-ca --server letsencrypt

Completando desafíos

Una vez que acme.sh está instalado y configurado, puedes usarlo para demostrar el control de tu dominio mediante uno de los desafíos especificados por la CA, como provisionar un recurso HTTP bajo uno de los URI conocidos del dominio o provisionar un registro DNS bajo el dominio. Aunque HTTP es el tipo de desafío más común, es posible que desees usar el método DNS si estás emitiendo certificados para un dominio wildcard o tienes múltiples servidores web.

Desafío HTTP

Este es actualmente el tipo de desafío más común, ya que es fácil de automatizar y funciona bien con servidores web estándar. Let’s Encrypt proporciona al cliente un token ACME, y debe insertar un archivo en tu servidor web en http://<TU_DOMINIO>/.well-known/acme-challenge/<TOKEN>

Si estás ejecutando acme.sh en un servidor diferente a tu origen principal, solo necesitas establecer una regla para dirigir las solicitudes de esta ruta a ese servidor.

La generación del certificado puede hacerse con un solo comando:

acme.sh --issue -d lets.httpbin.xyz -w /usr/share/nginx/html

Después de este comando, toma menos de 10 segundos completar el proceso de desafío.

Acme.sh almacenará el archivo en la ubicación indicada (/usr/share/nginx/html) y tanto tu edge application como tu servidor de origen recibirán una solicitud para obtener este archivo. Si el proceso finaliza con éxito, acme.sh mostrará la ubicación de los archivos de certificado, clave y cadenas.

Desafío DNS

El desafío ACME usando DNS agrega un valor específico a un registro TXT en el DNS de tu dominio. Normalmente, este tipo de desafío es más difícil de configurar que HTTP, pero si tu dominio está configurado en un servicio DNS con acceso a API, este proceso puede hacerse extremadamente rápido usando acme.sh.

Sin embargo, mantener credenciales de API en tu servidor web aumenta el impacto de un ataque si ese servidor web es hackeado. Por lo tanto, por razones de seguridad, te recomendamos crear una cuenta configurada exclusivamente para esta integración, con permisos solo para el servicio DNS.

Para integrar acme.sh con una API DNS, necesitas configurar las variables de entorno apropiadas para la autenticación de acceso. Las variables exactas dependerán de tu proveedor DNS.

Por ejemplo, si estás usando un proveedor DNS con acceso API:

export DNS_API_Email="tu.correo@ejemplo.com"
export DNS_API_Password="<TU CONTRASEÑA>"

El certificado puede generarse entonces usando el siguiente comando (reemplaza dns_provider con el nombre real del módulo acme.sh de tu proveedor DNS):

acme.sh --issue --dns dns_provider -d ejemplo.com

Todo este proceso puede seguirse mediante logs. acme.sh accederá a la API DNS y agregará el registro (TXT _acme-challenge.ejemplo.com) al dominio elegido. Después de eso, Let’s Encrypt hará una consulta de registro, y si todo está funcionando correctamente, se proporcionará el certificado y las claves.

Ahora solo tienes que subir el contenido de tu certificado y claves a tu servidor web o plataforma de entrega de contenido para usarlos con tu dominio.

Conclusión

Con un aumento tanto en el costo como en la frecuencia de los ciberataques durante el último año, es más importante que nunca que los propietarios de negocios digitales se comprometan con la seguridad de sus sitios web obteniendo certificados SSL para sus dominios. Aunque este proceso fue alguna vez engorroso, costoso y propenso a errores humanos, Let’s Encrypt ha aumentado drásticamente la adopción de HTTPS desde su lanzamiento al reducir significativamente la carga financiera y procedimental de la gestión de certificados.

Siguiendo este proceso, los usuarios pueden obtener fácilmente certificados SSL y, utilizando la integración de API DNS, incluso completar desafíos DNS para casos de uso especializados de una manera que es tanto simple como segura.

mantente actualizado

Suscríbete a nuestro boletín informativo

Recibe las últimas actualizaciones de productos, destacados de eventos y conocimientos de la industria tecnológica directamente en tu bandeja de entrada.