Certificados, ¿qué es el protocolo ACME?

Mec, mec. El Coyote persiguiendo al Correcaminos montado en un cohete marca ACME
El verdadero ACME

La primera vez que oyes lo de ACME, te imaginas al Coyote persiguiendo al Correcaminos y la voz en voz diciendo algo como «Cohete interestelar marca ACME» pero la verdad es mucho más prosaica

ACME
Automatic Certificate Management Environment
IETF RFC 8555

Para cualquier SSL, hay que seguir un proceso algo laborioso:

  1. Se solicita el certificado que queremos con los datos necesarios (ver Tipos de certificados de seguridad):
    • Solo el nombre de dominio (DV)
    • Datos de la organización (OV) y contactos en la empresa
    • Datos detallados de la organización y contactos en la empresa (EV)
  2. Se valida ese certificado
    • Para los DV, la validación es sencilla y se trata de asegurar de que tenemos acceso a la gestión del dominio.
      Hay 3 tipos de validaciones: DNS, FILE o EMAIL. Para la validación DNS tendrás que añadir una cadena concreta en un registro DNS. En el caso de FILE, es similar: hay que subir un archivo en una ruta concreta del dominio.
      Por EMAIL, se enviará un correo con un enlace a una dirección de email fija (admin@example.com…)
    • Para los OV y EV, la Autoridad Certificadora (CA), validará en BB.DD. externas la información o llamará al contacto indicando solicitando información adicional. Esta validación puede llevar varios días.
  3. Se genera el Certificate Signing Request (CSR) para la CA
  4. La CA emite el certificado y ya se puede descargar e instalar

Estos pasos se han hecho muchas veces de forma manual, intercambiando correos con la CA para poder avanzar en el proceso. Aquí es donde entra ACME que simplifica y automatiza todo esto y que, aunque vino de la mano de Let’s Encrypt, es un estándar IETF y ha sido adoptado por otras CA.

Cómo funciona ACME

El proceso de solicitud e instalación con o sin ACME es el mismo: solicitud, validación, descarga e instalación. ACME lo que hace es automatizar todo el proceso.

Proceso de solicitud de un SSL para un cliente registrado
  1. El primer paso es registrarse en el servidor de certificados como cliente ACME. Esto nos permite realizar solicitudes autorizadas de SSL.
  2. Generas la petición para emitir un certificado
  3. Debes probar que gestionas el dominio para el que solicitas el certificado (caso de DV)
  4. Finalizas la petición enviando el CSR
  5. La CA emite el certificado y ya lo puedes descargar e instalar

El proceso como vemos es el mismo. La diferencia está en que con ACME, todo esto se hace de forma automática. Se instala un agente en el servidor web (certbot o cualquier otro compatible) que es el encargado de la comunicación con la CA y de resolver las peticiones de validación del dominio. Las comunicaciones entre este agente/cliente y el servidor se realizan a través de mensajes JSON y por protocolo seguro (HTTPS) y no es necesaria la intervención del usuario de forma directa.

Referencias