Introducing the 2024 PKI & Digital Trust Report     | Download the Report

¿Qué es el protocolo ACME y cómo funciona?

DevOps

En este blog, los expertos de Keyfactor explican cómo funciona el protocolo ACME, por qué es importante para los despliegues modernos de infraestructura de clave pública (PKI) y gestión de certificados, y cómo puede ayudar a las organizaciones a lograr la automatización.

¿Qué es ACME?

ACME, o Automated Certificate Management Environment, es un protocolo que permite automatizar la emisión y renovación de certificados, todo ello sin interacción humana.

El Grupo de Investigación sobre Seguridad en Internet (ISRG) diseñó inicialmente el protocolo ACME para su propio servicio de certificados, Let's Encrypt, una autoridad de certificación (CA) abierta y gratuita que proporciona certificados de dominio validado (DV) sin coste alguno. En la actualidad, otras CA, proveedores de PKI y navegadores admiten ACME para distintos tipos de certificados.

Versiones ACME

La primera iteración del protocolo ACME, ACME v1, se publicó en 2016 e inicialmente solo admitía la emisión de certificados para un único dominio. Sin embargo, la versión actualizada ACME v2, publicada en 2018, admite ahora la emisión de certificados comodín. También incluye mejoras de seguridad para verificar mejor la propiedad del dominio y evitar que actores maliciosos obtengan certificados emitidos por ACME.

En 2019, el IETF estandarizó el protocolo ACME en RFC8555, y desde entonces muchos clientes han desarrollado soporte para el protocolo. ACME v2 no es compatible con v1, que quedará totalmente obsoleta en junio de 2021.

¿Cómo funciona el protocolo?

Gracias a ACME, las organizaciones pueden agilizar y automatizar procesos que, de otro modo, llevarían mucho tiempo, como la generación de CSR, la verificación de la propiedad del dominio, la emisión de certificados y la instalación.

ACME se utiliza principalmente para obtener certificados de dominio validado (DV). Esto se debe a que los certificados DV no requieren verificación avanzada. Sólo se valida la existencia del dominio, lo que no requiere intervención humana.

El protocolo también puede utilizarse para obtener certificados de mayor valor, como los de organización validada (OV) y validación ampliada (EV), pero estos casos requieren mecanismos de apoyo adicionales junto al agente ACME.

El objetivo del protocolo ACME es configurar un servidor HTTPS y automatizar el aprovisionamiento de certificados de confianza y eliminar cualquier transacción manual propensa a errores. Para utilizar el protocolo, se necesitan un cliente ACME y un servidor ACME, que se comunican con mensajes JSON a través de una conexión HTTPS segura.

 

Hay muchas implementaciones de cliente ACME diferentes disponibles para el protocolo. Está diseñado para que las empresas puedan elegir la CA que deseen, siempre que ésta admita ACME.

Let's Encrypt recomienda usar el cliente certbot, porque es fácil de usar, funciona en muchos sistemas operativos y tiene documentación útil. Otros clientes ACME populares se pueden encontrar en GitHub, como ACMESharp, acme-client, GetSSL, y muchos otros.

Configurar un cliente ACME

Una vez seleccionado el cliente, el siguiente paso es instalarlo en el dominio/servidor en el que deben desplegarse los certificados. Los clientes ACME pueden ejecutarse en casi cualquier lenguaje y entorno de programación, y el proceso de instalación consta de sólo 5 sencillos pasos:

  1. El cliente solicita que se introduzca el dominio que se va a gestionar.
  2. El cliente ofrece una lista de Autoridades de Certificación (CA) que soportan el protocolo.
  3. El cliente se pone en contacto con la CA seleccionada y genera un par de claves de autorización.
  4. La CA emite retos DNS o HTTPS para que el cliente demuestre el control sobre su(s) dominio(s).
  5. La CA envía un nonce -un número generado aleatoriamente- para que el agente lo firme con su clave privada y demuestre así la propiedad del par de claves.

 

Figura 1: Proceso de configuración inicial del cliente ACME.

Configuración del cliente de protocolo ACME

Una vez que la CA verifica que el cliente es auténtico, el cliente ACME está listo para solicitar certificados en nombre del dominio o dominios validados.

Uso de ACME para implantar y gestionar certificados

La emisión y renovación de certificados mediante el protocolo ACME es sencilla. El cliente simplemente envía solicitudes de gestión de certificados y las firma con el par de claves autorizado.

Emisión/renovación: un servidor web con el agente ACME instalado genera una CSR, la envía a la CA y ésta la emite. El proceso de emisión y renovación funciona de forma similar:

  1. El agente envía a la CA una Solicitud de Firma de Certificado (CSR) solicitando la emisión de un certificado para el dominio autorizado con una clave pública especificada.
  2. El CSR se firma con la clave privada correspondiente y la clave autorizada para el dominio.
  3. Cuando la CA recibe la solicitud, verifica ambas firmas, emite un certificado para el dominio autorizado con la clave pública de la CSR y lo devuelve al agente.

 

Figura 2: Emisión/renovación de certificados. Fuente: Let's Encrypt.

Emisión de certificados de protocolo ACME

Revocación: para revocar un certificado, el agente firma la solicitud de revocación con el par de claves autorizado para el dominio, y la CA valida la solicitud. A continuación, la CA publica la información de revocación a través de CRL u OCSP para evitar la aceptación del certificado revocado.

Figura 3: Revocación de certificados. Fuente: Let's Encrypt.

Revocación del certificado del protocolo ACME

¿Cómo se utiliza el protocolo ACME?

En el informe 2021 State of Machine Identity Management, el 40% de los encuestados revelaron que sus organizaciones siguen utilizando hojas de cálculo para realizar un seguimiento manual de los certificados. De media, estas organizaciones experimentaron aproximadamente tres interrupciones inesperadas causadas por certificados caducados o mal configurados en un plazo de dos años.

A pesar del uso cada vez mayor de entornos informáticos modernos y ágiles, muchas empresas siguen implantando y gestionando certificados con técnicas anticuadas que no son adecuadas para satisfacer las crecientes exigencias de los vertiginosos entornos actuales. La gestión manual de certificados en hojas de cálculo o bases de datos introduce ineficacia y riesgo de interrupción o incumplimiento debido a errores humanos.

Eso es exactamente lo que destaca la documentación del protocolo ACME: "Las autoridades de certificación PKI web existentes tienden a utilizar un conjunto de protocolos ad hoc para la emisión de certificados y la verificación de identidad. Estos procedimientos ad hoc se llevan a cabo haciendo que el usuario humano siga instrucciones interactivas en lenguaje natural de la CA en lugar de mediante protocolos publicados implementados por máquinas. En muchos casos, las instrucciones son difíciles de seguir y causan frustración y confusión significativas".

Uso de ACME para automatizar certificados

El uso extendido de certificados de servidor TLS para proteger aplicaciones y datos aumenta la probabilidad de interrupciones, ya que hay más certificados que controlar y más certificados por aplicación empresarial que pueden afectar a las operaciones. Las solicitudes, renovaciones y aprovisionamiento de certificados mediante métodos manuales y hojas de cálculo llevan horas o días. Además de requerir mucho tiempo, es un proceso propenso a errores que puede provocar dolorosas interrupciones.

ACME ayuda a aliviar esta problemática situación al permitir a los administradores de TI demostrar a la CA de forma automatizada que controlan el dominio, emitir un certificado de confianza y realizar un seguimiento de la caducidad del certificado. Además, pueden renovar o revocar automáticamente el certificado siempre que sea necesario.

ACME aporta automatización a las complejas implantaciones de PKI. O como dice la documentación del protocolo, ACME proporciona un "marco extensible para automatizar el procedimiento de emisión y validación de dominios, permitiendo así a los servidores y a la infraestructura software obtener certificados sin interacción del usuario. El uso de este protocolo debería simplificar radicalmente el despliegue de HTTPS y la viabilidad de la autenticación basada en PKIX para otros protocolos basados en TLS."

La importancia de la agilidad de las CA

La agilidad de las CA es la capacidad de añadir/eliminar o cambiar de una CA a otra, lo que es fundamental para la agilidad empresarial y para evitar la dependencia de una CA. Es una de las mejores prácticas del sector evitar crear una gran dependencia de una única CA. Deberíamos ser capaces de cambiar de CA de forma transparente, siempre que sea necesario y sin impacto en el negocio.

Si una organización está bloqueada en una única CA y le ocurre algo, como un compromiso o una interrupción del servicio, podría tener un gran impacto en la disponibilidad de las operaciones en línea. Por eso, poder cambiar a una CA de respaldo es una buena práctica.

ACME facilita el proceso de elección de una CA de respaldo. Actualmente hay muchas CA que soportan el protocolo ACME y elegir una está a solo unos clics durante la fase de configuración.

Keyfactor + ACME

La plataformaKeyfactor admite la automatización y el autoservicio mediante sólidas funciones integradas, además de la automatización de certificados basada en protocolos abiertos mediante ACME.

La plataforma puede funcionar como un servidor ACME, lo que le ayuda a reducir los procesos manuales, que llevan mucho tiempo, y los errores humanos con la gestión integral del ciclo de vida de los certificados, y facilita a los equipos la obtención de certificados aprobados por seguridad.