Publicado el
11 de febrero de 2024
Introducción
El protocolo ACME es un protocolo de red diseñado para automatizar el proceso de validación de dominios y la entrega de certificados X.509. El proceso se establece entre un servidor ACME y un cliente ACME.
Dos clientes populares en Linux son Certbot y acme.sh.
Certbot es un cliente ACME de código abierto creado por la Electronic Frontier Foundation (EFF) originalmente para ser usado en coordinación con su propio servicio de Autoridad de Certificación: Let's Encrypt.
El segundo cliente, acme.sh, es un cliente escrito en lenguaje Shell (shell de Unix) bajo la licencia GPLv3.
Visión general
Certbot y acme.sh son clientes ACME simples basados en CLI para Linux.
Certbot puede ejecutarse en cualquier sistema operativo tipo UNIX reciente equipado con Python 2.7 or 3.4+, mientras que acme.sh también puede ejecutarse en cualquier distribución Linux reciente que ejecute bash, dash or sh
Ambos soportan completamente la última ACMEv2 protocolo, incluyendo su característica principal más reciente: certificados comodín (\*.example.com).
Ambos clientes admiten diferentes modos para obtener un certificado y, en algunos casos, instalarlo automáticamente.
Las siguientes tablas enumeran los diferentes modos para cada cliente:
| Modo | Cert bot | Acme.sh | Notas |
|---|---|---|---|
| apache | ✔️ | ✔️ | Obtiene e instala automáticamente un certificado usando el servidor Apache en ejecución.( Para acme.sh, este modo solo obtendrá un certificado sin instalarlo) |
| nginx | ✔️ | ✔️ | Obtiene e instala automáticamente un certificado usando el servidor NGINX en ejecución.( Para acme.sh, este modo solo obtendrá un certificado sin instalarlo) |
| raíz web | ✔️ | ✔️ | Obtiene un certificado escribiendo en el directorio webroot de un servidor web ya en funcionamiento. |
| independiente | ✔️ | ✔️ | Utiliza un servidor web "standalone" gestionado por Certbot o acme.sh. Este modo es útil en sistemas sin servidores web o si no se desea usar el servidor web en funcionamiento. |
| DNS | ✔️ | ✔️ | Este modo automatiza la obtención de un certificado modificando un registro DNS para demostrar el control sobre un dominio. |
| tls-alpn | ❌ | ✔️ | Utiliza un servidor TLS para validar el control sobre un dominio. |
Solicitud de certificado
Ambos clientes deben ejecutarse usando privilegios administrativos (sudo), excepto acme.sh cuando se usa el webroot o DNS modos.
Cada cliente requiere solo unos pocos parámetros para solicitar un certificado por defecto de Let's Encrypt.
¿Desea implementar estas prácticas PKI?
Obtenga orientación experta para implementar soluciones PKI seguras para su organización.
Obtener ayuda expertaPor ejemplo para Certbot:
| Parámetro | Descripción |
|---|---|
| certonly | Obtener o renovar un certificado, pero no instalarlo |
| raíz web | Coloque archivos en la carpeta raíz web de un server's para autenticación |
| -w [VALUE] | Ruta de la carpeta raíz web del server's |
| -d [VALUE] | Los dominio(s) para inscribirse. |
El comando sería:
certbot certonly --webroot -w /var/www/example -d www.example.com
Por otro lado, los parámetros para acme.sh son:
| Parámetro | Descripción |
|---|---|
| --issue | Obtener o renovar un certificado, pero no instalarlo |
| -d [VALUE] | Los dominio(s) para inscribirse. |
| -w [VALUE] | Ruta de la carpeta raíz web del server's |
El comando sería:
acme.sh --issue -d example.com -w /var/www/example
Hay muchas más opciones en ambos clientes para personalizar las solicitudes a necesidades específicas.
Para obtener más información, visite la página web oficial de Certbot y acme.sh: * [Certbot](https://certbot.eff.org/docs/using.html) * [acme.sh](https://github.com/Neilpang/acme.sh)
Casos de uso
Por defecto, Certbot y acme.sh solicitarán un certificado usando la Let's Encrypt CA pero hay varios casos de uso donde se preferiría solicitar un certificado de otra CA.
Los siguientes ejemplos describirán cómo usar algunos de los diferentes modos de Certbot y acme.sh para solicitar o revocar un certificado de otra CA.
Modo Apache
Usar el modo Apache de Certbot y acme.sh solicitará un certificado, validará el control sobre el dominio solicitado utilizando el servidor Apache en ejecución y luego instalará el certificado en el servidor (solo para Certbot).
El siguiente ejemplo detalla la solicitud utilizada, sus parámetros y los resultados de la solicitud usando el modo Apache con Certbot.
Modo NGINX
Usar el modo NGINX de Certbot y acme.sh solicitará un certificado, validará el control sobre el dominio solicitado usando el servidor NGINX en ejecución y luego instalará el certificado en el servidor (solo para Certbot).
Los siguientes ejemplos detallan las solicitudes utilizadas, los parámetros y los resultados de las solicitudes usando el modo NGINX.
Modo independiente
Usar el modo independiente de Certbot y acme.sh solicitará un certificado, validará el control sobre el dominio solicitado utilizando un servidor web independiente ejecutado por Certbot o acme.sh.
En este caso de uso, el certificado solo se obtiene y no se instala en el servidor web en funcionamiento. La configuración del servidor web debe modificarse posteriormente para que el certificado sea utilizado.
Los siguientes ejemplos detallan las solicitudes utilizadas, los parámetros y los resultados de las solicitudes usando el modo independiente.
Revocación
Ambos clientes también pueden revocar los certificados que manejan enviando una solicitud de revocación con el nombre de dominio correcto del certificado a revocar.
Los siguientes ejemplos detallan las solicitudes utilizadas, los parámetros y los resultados de las solicitudes para revocar un certificado usando Certbot.