Использование DNS-авторизации certbot с несколькими учетными записями API?

Я использую клиент EFF certbot ACME для генерации одного сертификата TLS на моем веб-сервере, на котором размещено несколько доменов с использованием альтернативных имен субъектов (SAN). До сих пор все домены размещались в определенной группе Digital Ocean, и у меня есть certbot, настроенный с помощью плагина Digital Ocean DNS и личный токен доступа, созданный для этой группы для создания сертификата с несколькими доменами (включая домены с подстановочными знаками).

Теперь клиент хочет, чтобы я также обслуживал домен, над которым он хочет сохранить полный контроль, поэтому мы создали новую команду Digital Ocean, и моей учетной записи, в которой был создан токен личного доступа DO, был предоставлен доступ. К сожалению, я также обнаружил, что личный токен доступа создается для группы и не может использоваться с другой командой.

Я просмотрел документацию по certbot, но не смог найти, как настроить разные учетные данные DO для разных доменов для одного и того же сертификата SAN. - возможно ли это?

Если нет - какие еще альтернативы вы бы предложили для реализации этого варианта использования?

0
задан 15 December 2020 в 16:43
2 ответа

Я считаю, что вы можете сделать это, просто указав разные файлы конфигурации.

Согласно certbot-dns-digitalocean документации плагина учетные данные предоставляются в файле ini:

- dns-digitalocean-credentials INI-файл учетных данных DigitalOcean. (Обязательно)

С ini-файлом, содержащим что-то вроде:

dns_digitalocean_token = 0000111122223333444455556666777788889999aaaabbbbccccddddeeeeffff

Если бы вы создавали разные такие файлы для разных учетных данных, вы могли бы использовать разные учетные данные в этих файлах.

То есть, что-то вроде

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

и

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

будет использовать учетные данные из двух отдельных файлов.

0
ответ дан 4 January 2021 в 09:32

Это очевидно, не поддерживается никакими встроенными плагинами аутентификатора, но может быть решена с помощью "ручного перехвата" для сценариев задач и выбора для каждого проверяемого домена, лучший метод для генерации токена проверки.

I Мы написали ручной скрипт перехвата, который поддерживает проверку доменов в нескольких командах / пользователях Digital Ocean, при условии, что у вас есть личный токен доступа для каждого. Скрипт доступен здесь: https://gist.github.com/guss77/01f095623a1d2fd00869784554d3e1a5[1153145 impression.[12210estive] Чтобы использовать его, убедитесь, что у вас установлен инструмент Digital Ocean CLI doctl где-нибудь (и настройте его в скрипте), а также настройте свои личные токены доступа в скрипте (скрипту также нужны dig и несколько общих инструментов оболочки POSIX, которые я ожидаю найти повсюду, хотя могут не работать далеко за пределами Linux).

Затем вместо использования одного из плагинов - dns * используйте:

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

При попытке аутентификации certbot вызовет этот сценарий для создания записей DNS для каждого домена для проверки - для чего скрипт будет использовать инструмент doctl ,после сканирования списка доступных доменов с использованием каждого личного токена доступа и выбора правильной «зоны» для создания записи.

Однако у меня иногда возникают проблемы с этим подходом, особенно в отношении времени распространения DNS - certbot поддерживает настраиваемый DNS таймауты ожидания распространения для подключаемых модулей DNS, но не для ручного режима, и в противном случае нет хорошего способа имитировать это.

1
ответ дан 4 January 2021 в 09:32

Теги

Похожие вопросы