Let’s Encrypt es una autoridad de certificación (CA, Certificate Authority en inglés) gratuita, abierta y automatizada que emite certificados SSL por medio del uso del protocolo ACME (Automatic Certificate Management Environment, entorno de gestión automática de certificados). Los certificados SSL son componentes fundamentales para la seguridad y el éxito de un sitio web, ya que permiten la transferencia segura de datos mediante HTTPS. Esto no solo hace que mejore el posicionamiento de un sitio web en los motores de búsqueda, así como la confianza del usuario, sino que también permite el uso del protocolo HTTP/2, lo que resulta en una mejora significativa del desempeño respecto a HTTP/1.
Actualmente, los clientes de Azion pueden obtener certificados SSL sin costo por medio del uso de nuestro dominio compartido, o al usar sus propios dominios HTTPS para cargar sus propios certificados SSL, los cuales pueden ser configurados sin costo adicional en nuestro Real-Time Manager. 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 esa identidad a la clave pública del servidor. Esta publicación ofrecerá a los lectores una guía para este proceso, desde la instalación y configuración del software necesario hasta la emisión de certificados a través de los tipos de desafío de HTTP y de DNS.
¿Qué es ACME y cómo funciona?
Let’s Encrypt utiliza el protocolo ACME para verificar si controlas un nombre de dominio determinado y para emitir un certificado. Con ACME, el proceso de obtener un certificado SSL está completamente automatizado; esto mejora la seguridad al reducir la posibilidad de un error y permite a Let’s Encrypt ofrecer certificados de dominios validados de forma gratuita.
ACME permite a agentes de software en servidores HTTPS obtener, aprovisionar y renovar certificados automáticamente, sin interacción humana. Sin embargo, antes de que el cliente solicitante pueda gestionar el certificado, debe demostrar que controla el dominio. Primero, el agente solicitante envía la clave pública a sus servidores y solicita a Let’s Encrypt lo que se debe 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 una clave digital (token), que el cliente debe firmar con su par de claves privadas.
Após Después de que el cliente completa los desafíos, debe firmar el token con su clave privada para demostrar que controla el par de claves y notificar a la CA que está todo listo para completar la validación. Una vez que la CA verifica la firma y confirma que el desafío fue superado, el agente es autorizado para la gestión de certificados mediante el par de claves.
Para obtener un certificado, el agente construye una Solicitud de Firma de Certificado (CSR, Certificate Signing Request en inglés) PKCS#10 para solicitar a la CA que emita un certificado para el dominio por medio de una clave pública específica, acompañada por la firma de la clave privada correspondiente y la firma del par de claves autorizadas para el dominio. Después de verificar las dos firmas, la CA emite un certificado para el dominio con la clave pública de la CSR.
Instalación y configuración de acme.sh
Para obtener un certificado Let’s Encrypt, necesitarás elegir un software cliente de ACME. En este sentido, acmesh es un software recomendado y mantenido por la comunidad que implementa el protocolo ACME en script de shell Unix puro y, por lo tanto, es compatible con múltiples plataformas (como Mac OSX, Windows, FreeBSD, Solaris y en diversas distribuciones de Linux).
Al usar acme.sh es posible emitir y renovar certificados con ambos tipos de desafíos, HTTP y DNS. Acme.sh es compatible con el protocolo IPv6 y es fácil de usar. Aunque GitHub provee métodos de instalación adicionales, este tutorial te guiará en la instalación y configuración a través del comando curl.
Acme.sh se puede instalar en el mismo servidor de origen de tu edge application, o en un servidor específico para ejecutar este servicio. El comando curl para la instalación es:
curl https://get.acme.sh | sh -s email=gabriel.nes@azion.com
source ~/.bashrc
La instalación se puede verificar al emitir el siguiente comando:
acme.sh --version
V2.8.1
Después de instalar acme.sh, puedes configurarlo para usar Let’s Encrypt como una CA, con el siguiente comando:
acme.sh --set-default-ca --server letsencrypt
Completar los desafíos
Una vez que acme.sh está instalado y configurado, puedes usarlo para demostrar el control de tu dominio con uno de los desafíos especificados por la CA, como aprovisionar un recurso de HTTP en uno de los URI conocidos del dominio o proveer un registro de DNS en el dominio. Aunque HTTP es el tipo de desafío más común, podrás usar el método de DNS si estás emitiendo certificados para un dominio de comodín (wildcard) o si tienes múltiples servidores web. Cualquiera de los desafíos puede ser fácilmente completado al usar Edge Application; solo debes seguir el proceso indicado a continuación.
Desafío de HTTP
Actualmente, este es el tipo de desafío más común, ya que es fácil de automatizar y funciona bien con servidores web existentes. Let’s Encrypt provee al cliente un token de ACME que debe insertar un archivo en tu servidor web en
http://<YOUR_DOMAIN>/.well-known/acme-challenge/ <TOKEN>
Si estás ejecutando acme.sh en un servidor diferente al de tu origen principal, solo necesitas establecer una regla en Edge Application para dirigir las solicitudes de esta ruta hacia ese servidor.
La generación del certificado puede ser realizada con un único comando:
acme.sh --issue -d lets.httpbin.xyz -w /usr/share/nginx/html
Después de ingresar este comando, el proceso del desafío se completará en menos de 10 segundos.
Acme.sh almacenará el archivo en la siguiente dirección (/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 es finalizado exitosamente, acme.sh mostrará la localización de los archivos de certificación, clave y strings.
Desafío de DNS
El desafío de ACME que usa DNS agrega un valor específico a un registro TXT en el DNS de tu dominio. Usualmente, este tipo de desafío es más difícil de configurar que el HTTP, pero si tu dominio está configurado con Intelligent DNS de Azion, este proceso se puede hacer extremadamente rápido al usar acme.sh.
Sin embargo, mantener las credenciales de API en tu servidor web aumenta el impacto de un ataque si ese servidor web es atacado por un hacker. Por lo tanto, por razones de seguridad, te recomendamos crear la cuenta configurada a continuación exclusivamente para esta integración, con permisos solo para Intelligent DNS.
Para integrar acme.sh con la API de Intelligent DNS, necesitamos configurar las siguientes variables de entorno para la autenticación de acceso:
export AZION_Email="gabriel.nes@azion.com"
export AZION_Password="<YOUR PASSWORD>"
El certificado puede ser generado al ingresar el siguiente comando:
acme.sh --issue --dns dns_azion -d lets2.httpbin.xyz
Todo este proceso puede ser seguido por los logs. Acme.sh accederá a la API de Edge DNS de Azion y añadirá el siguiente registro (TXT _acme-challenge.lets2.httpbin.xyz
) al dominio elegido. Después de eso, Let’s Encrypt realizará una consulta de registro y, si todo funciona correctamente, se proporcionarán el certificado y las claves.
Ahora solo tienes que cargar el contenido de tu certificado y las claves a Azion Manager o a través de la API de certificados digitales (Digital Certificates) para usarlos en tu dominio.
Conclusión
Con el incremento tanto en el costo como en la frecuencia de ataques cibernéticos durante el año pasado, es más importante que nunca que los propietarios de negocios digitales se comprometan con la seguridad de sus sitios web mediante la obtención de certificados SSL para sus dominios. Aunque este proceso era complicado, costoso y propenso a errores humanos, Let’s Encryptha aumentado drásticamente la adopción de HTTP desde su lanzamiento al reducir significativamente la carga financiera y de procedimientos en la gestión de certificados. Al seguir este proceso, los usuarios de Azion pueden obtener con facilidad certificados SSL y, mediante el uso de Intelligent DNS, completar los desafíos de DNS para casos de uso especializados de forma simple y segura. Para conocer más sobre Intelligent DNS, entra en contacto con nuestros expertos o crea una cuenta gratis para experimentar cómo Edge DNS puede mejorar la seguridad y disponibilidad de tu sitio web ahora.