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.
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 utilizado 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.
Descripción general
Certbot y acme.sh son clientes ACME simples basados en CLI para Linux.
Certbot puede ejecutarse en cualquier sistema operativo reciente tipo UNIX equipado con Python 2.7 o 3.4+ , mientras que acme.sh también puede ejecutarse en cualquier distribución Linux reciente que ejecute bash, dash o sh .
Ambos son totalmente compatibles con el último ACMEv2 , incluida su última característica principal: 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 | Bot de certificación | Acme.sh | Notas |
|---|---|---|---|
| apache | ✔️ | ✔️ | Obtiene e instala automáticamente un certificado utilizando 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 utilizando 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 raíz de un servidor web que ya está en ejecución. |
| autónomo | ✔️ | ✔️ | Utiliza un servidor web independiente administrado por Certbot o acme.sh. Este modo es útil en sistemas sin servidores web o si no se desea usar el servidor web en ejecución. |
| 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 utilizando privilegios administrativos (sudo), excepto acme.sh cuando se utilizan los webroot o DNS .
Cada cliente requiere sólo unos pocos parámetros para solicitar un certificado predeterminado de Let's Encrypt.
¿Quieres implementar estas prácticas de PKI?
Obtenga orientación experta sobre la implementación de soluciones PKI seguras para su organización.
Obtenga ayuda de expertosPor ejemplo para Certbot:
| Parámetro | Descripción |
|---|---|
| ciertamente | Obtenga o renueve un certificado, pero no lo instale |
| raíz web | Coloque los archivos en la carpeta raíz web de un servidor para la autenticación |
| -w [VALOR] | Ruta de la carpeta raíz web del servidor |
| -d [VALOR] | El(los) dominio(s) a inscribir. |
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 |
|---|---|
| --asunto | Obtenga o renueve un certificado, pero no lo instale |
| -d [VALOR] | El(los) dominio(s) a inscribir. |
| -w [VALOR] | Ruta de la carpeta raíz web del servidor |
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 según 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
De forma predeterminada, Certbot y acme.sh solicitarán un certificado mediante la CA Let's Encrypt, pero hay varios casos de uso en los que uno preferiría solicitar un certificado de otra CA.
Los siguientes ejemplos describirán cómo utilizar algunos de los diferentes modos de Certbot y acme.sh para solicitar o revocar un certificado de otra CA.
Modo Apache
Al usar el modo Apache de Certbot y acme.sh se solicitará un certificado, se validará el control sobre el dominio solicitado utilizando el servidor Apache en ejecución y luego se 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 utilizando el modo Apache usando Certbot.
Modo NGINX
Al usar el modo NGINX de Certbot y acme.sh se solicitará un certificado, se validará el control sobre el dominio solicitado utilizando el servidor NGINX en ejecución y luego se 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 utilizando el modo NGINX.
Modo independiente
Al utilizar el modo independiente de Certbot y acme.sh se solicitará un certificado y validará el control sobre el dominio solicitado utilizando un servidor web independiente ejecutado por Certbot o acme.sh.
En este caso, el certificado solo se obtiene y no se instala en el servidor web en ejecución. La configuración del servidor web debe modificarse posteriormente para que el certificado se utilice.
Los siguientes ejemplos detallan las solicitudes utilizadas, los parámetros y los resultados de las solicitudes utilizando 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 utilizando Certbot.