
Estoy usando el cliente EFF certbot ACME para generar un único certificado TLS en mi servidor web que aloja varios dominios utilizando nombres alternativos de sujeto (SAN). Hasta ahora, todos los dominios estaban alojados en un equipo de Digital Ocean específico, y tengo certbot configurado con el complemento DNS de Digital Ocean y un token de acceso personal creado para que ese equipo genere un certificado con múltiples dominios (incluidos dominios comodín).
Ahora un cliente quiere que yo también proporcione un dominio sobre el que quiere mantener el control total, por lo que creamos un nuevo equipo de Digital Ocean y se le ha dado acceso a mi cuenta donde se creó el token de acceso personal DO. Desafortunadamente, también descubrí que los tokens de acceso personal se crean para un equipo y no se pueden usar con otro equipo.
Revisé los documentos de certbot pero no pude encontrar cómo configurar diferentes credenciales DO para diferentes dominios para el mismo certificado SAN. ¿Es esto posible?
Si no es así, ¿qué otras alternativas sugeriría para implementar este caso de uso?
Respuesta1
Aparentemente, esto no es compatible con ningún complemento de autenticación integrado, pero se puede resolver usando un "enganche manual" para programar los desafíos y allí elegir para cada dominio que se verifica, el mejor método para generar el token de verificación.
Escribí un script de enlace manual que admite la verificación de dominios en múltiples equipos/usuarios de Digital Ocean, suponiendo que tenga un token de acceso personal para cada uno.El script está disponible aquí: https://gist.github.com/guss77/01f095623a1d2fd00869784554d3e1a5.
Para usarlo, asegúrese de tener la doctl
herramienta CLI de Digital Ocean instalada en algún lugar (y configúrela en el script) y también configure sus tokens de acceso personales en el script (el script también necesita dig
algunas herramientas de shell POSIX comunes que espero encontrar en todas partes, aunque puede que no funcione bien fuera de Linux).
Luego, en lugar de utilizar uno de los --dns*
complementos, utilice:
--preferred-challenges=dns --manual \
--manual-auth-hook /path/to/certbot-hook.sh \
--manual-cleanup-hook /path/to/certbot-hook.sh
Al intentar autenticarse, certbot llamará a este script para crear los registros DNS para cada dominio que se va a verificar, para lo cual el script utilizará la doctl
herramienta, después de escanear la lista de dominios disponibles usando cada token de acceso personal y elegir la "zona" correcta. en el que crear el registro.
Sin embargo, a veces tengo problemas con este enfoque, específicamente en torno al tiempo de propagación de DNS: certbot admite tiempos de espera de propagación de DNS personalizados para complementos de DNS, pero no para el modo manual y no hay una buena manera de imitarlo de otra manera.
Respuesta2
Creo que puedes hacer esto simplemente especificando diferentes archivos de configuración.
Según elcertbot-dns-digitalocean
documentación del complementolas credenciales se proporcionan en un archivo ini:
--dns-digitalocean-credentials
Archivo INI de credenciales de DigitalOcean. (Requerido)
Con el archivo ini que contiene algo como:
dns_digitalocean_token = 0000111122223333444455556666777788889999aaaabbbbccccddddeeeeffff
Si tuviera que crear diferentes archivos de este tipo para sus diferentes credenciales, podría hacer que el complemento use diferentes credenciales especificando estos diferentes archivos.
Es decir, algo como
certbot certonly \
--dns-digitalocean \
--dns-digitalocean-credentials ~/.secrets/certbot/digitalocean-foo.ini \
-d domain1.example
y
certbot certonly \
--dns-digitalocean \
--dns-digitalocean-credentials ~/.secrets/certbot/digitalocean-bar.ini \
-d domain2.example
usaría las credenciales de dos archivos separados.