Usando a autorização DNS do certbot com várias contas de API?

Usando a autorização DNS do certbot com várias contas de API?

Estou usando o cliente EFF certbot ACME para gerar um único certificado TLS em meu servidor da web que hospeda vários domínios usando nomes alternativos de assunto (SAN). Até agora, todos os domínios estavam hospedados em uma equipe específica da Digital Ocean, e eu tenho o certbot configurado com o plugin Digital Ocean DNS e um token de acesso pessoal criado para essa equipe gerar um certificado com vários domínios (incluindo domínios curinga).

Agora, um cliente quer que eu também sirva um domínio sobre o qual ele deseja manter o controle total, então criamos uma nova equipe da Digital Ocean e minha conta onde o token de acesso pessoal DO foi criado recebeu acesso. Infelizmente, também descobri que os tokens de acesso pessoal são criados para uma equipe e não podem ser usados ​​com outra equipe.

Examinei a documentação do certbot, mas não consegui descobrir como configurar credenciais DO diferentes para domínios diferentes para o mesmo certificado SAN - isso é possível?

Caso contrário, que outras alternativas você sugeriria para implementar este caso de uso?

Responder1

Aparentemente, isso não é suportado por nenhum plug-in autenticador integrado, mas pode ser resolvido usando um "gancho manual" para criar o script dos desafios e escolher, para cada domínio que está sendo verificado, o melhor método para gerar o token de verificação.

Escrevi um script de gancho manual que oferece suporte à verificação de domínios em várias equipes/usuários da Digital Ocean, supondo que você tenha um token de acesso pessoal para cada um.O script está disponível aqui: https://gist.github.com/guss77/01f095623a1d2fd00869784554d3e1a5.

Para usá-lo, certifique-se de ter a doctlferramenta Digital Ocean CLI instalada em algum lugar (e configure-a no script) e também configure seus tokens de acesso pessoais no script (o script também precisa digde algumas ferramentas shell POSIX comuns que espero usar encontrar em todos os lugares, embora possa não funcionar bem fora do Linux).

Então, em vez de usar um dos --dns*plugins, use:

--preferred-challenges=dns --manual \
--manual-auth-hook /path/to/certbot-hook.sh \
--manual-cleanup-hook /path/to/certbot-hook.sh

Ao tentar autenticar, o certbot chamará esse script para criar os registros DNS de cada domínio a ser verificado – para o qual o script utilizará a doctlferramenta, após escanear a lista de domínios disponíveis usando cada token de acesso pessoal e escolher a “zona” correta no qual criar o registro.

Às vezes, tenho problemas com essa abordagem, especificamente em torno do tempo de propagação do DNS - o certbot suporta tempos limite de espera de propagação de DNS personalizados para plug-ins de DNS, mas não para o modo manual e não há uma boa maneira de imitá-lo de outra forma.

Responder2

Acredito que você pode fazer isso simplesmente especificando diferentes arquivos de configuração.

Conformecertbot-dns-digitaloceandocumentação do pluginas credenciais são fornecidas em um arquivo ini:

--dns-digitalocean-credentials Arquivo INI de credenciais da DigitalOcean. (Obrigatório)

Com o arquivo ini contendo algo como:

dns_digitalocean_token = 0000111122223333444455556666777788889999aaaabbbbccccddddeeeeffff

Se você criasse arquivos diferentes para suas credenciais diferentes, poderia fazer com que o plug-in usasse credenciais diferentes, especificando esses arquivos diferentes.

Ou seja, algo como

certbot certonly \
  --dns-digitalocean \
  --dns-digitalocean-credentials ~/.secrets/certbot/digitalocean-foo.ini \
  -d domain1.example

e

certbot certonly \
  --dns-digitalocean \
  --dns-digitalocean-credentials ~/.secrets/certbot/digitalocean-bar.ini \
  -d domain2.example

usaria as credenciais de dois arquivos separados.

informação relacionada