¿Utiliza la autorización DNS de certbot con múltiples cuentas API?

¿Utiliza la autorización DNS de certbot con múltiples cuentas API?

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 doctlherramienta 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 digalgunas 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 doctlherramienta, 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-digitaloceandocumentació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.

información relacionada