Я использую клиент EFF certbot ACME для генерации одного сертификата TLS на моем веб-сервере, на котором размещено несколько доменов с использованием альтернативных имен субъектов (SAN). До сих пор все домены размещались в определенной группе Digital Ocean, и у меня есть certbot, настроенный с помощью плагина Digital Ocean DNS и личный токен доступа, созданный для этой группы для создания сертификата с несколькими доменами (включая домены с подстановочными знаками).
Теперь клиент хочет, чтобы я также обслуживал домен, над которым он хочет сохранить полный контроль, поэтому мы создали новую команду Digital Ocean, и моей учетной записи, в которой был создан токен личного доступа DO, был предоставлен доступ. К сожалению, я также обнаружил, что личный токен доступа создается для группы и не может использоваться с другой командой.
Я просмотрел документацию по certbot, но не смог найти, как настроить разные учетные данные DO для разных доменов для одного и того же сертификата SAN. - возможно ли это?
Если нет - какие еще альтернативы вы бы предложили для реализации этого варианта использования?
Я считаю, что вы можете сделать это, просто указав разные файлы конфигурации.
Согласно 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
будет использовать учетные данные из двух отдельных файлов.
Это очевидно, не поддерживается никакими встроенными плагинами аутентификатора, но может быть решена с помощью "ручного перехвата" для сценариев задач и выбора для каждого проверяемого домена, лучший метод для генерации токена проверки.
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, но не для ручного режима, и в противном случае нет хорошего способа имитировать это.