Я хочу использовать certbot
чтобы создать подстановочную сертификацию, и после запуска certbot ...
он дает мне хэш, говорит мне подождать, пока я не внесу его в запись TXT моего домена.
Но у меня нет прямого доступа к используемой мной службе DNS. У меня есть служебная процедура для обновления настроек DNS, это требует времени, поэтому я не могу держать окно SSH открытым здесь. Если я перезапущу certbot
, хеш изменяется и возникает та же проблема.
Как правильно дождаться обновления DNS и сохранить хэш без изменений? Спасибо!
AFAIK, TTL не имеет отношения к проблеме DNS-01. Похоже, что Let's Encrypt проверяет, какие серверы являются авторитетными, и напрямую запрашивает один из авторитетных серверов, поэтому необходимая задержка связана с разрешением синхронизации данных зоны со всеми авторитетными серверами, а не с ожиданием истечения срока действия кешей (это было бы где актуально TTL).
Тем не менее, предполагаемый способ выполнения Let's Encrypt - это автоматизация, независимо от того, используете ли вы вызов HTTP-01 или запрос DNS-01.
Основным преимуществом этого является то, что после небольшой предварительной работы сертификаты будут автоматически обновляться по мере необходимости (при наличии certbot renew
вызывается регулярно), что очень важно для обеспечения жизнеспособности этих недолговечных сертификатов.
certbot
поставляется с набором плагины для обновления DNS (и всегда есть возможность реализовать свой собственный).
На момент публикации список плагинов был:
- certbot-dns-cloudflare
- certbot-dns-cloudxns
- certbot-dns-digitalocean
- certbot-dns-dnsimple
- certbot-dns-dnsmadeeasy
- certbot-dns-google
- certbot-dns-linode
- certbot-dns-luadns
- certbot-dns-nsone
- certbot-dns-ovh
- certbot-dns-rfc2136
- certbot-dns-route53
(Обновленный список см. В документации + ссылки на соответствующие инструкции)
Т.е. по сути есть плагин с поддержкой RFC2136 (обычный DNS динамические обновления, совместимый с большинством стандартных DNS-серверов, которые вы можете запустить самостоятельно) + набор плагинов для проприетарных API-интерфейсов некоторых основных поставщиков услуг DNS.
Пример использования:
certbot certonly \
--dns-rfc2136 \
--dns-rfc2136-credentials ~/.secrets/certbot/rfc2136.ini \
-d example.com
У них также есть аргумент (имя зависит от плагина), например --dns-rfc2136-propagation-seconds
Это позволяет настроить, как долго ждать перед выполнением задачи (чтобы данные зоны могли синхронизироваться с полномочными органами).
Я обнаружил, что если я Ctrl-C перед вызовом (например, нажмите Enter), хеш не изменится.
Так что я могу дождаться обновления DNS и перезапустить certbot
, он показывает тот же хеш, и теперь я могу сразу нажать Enter.
Каждая запись DNS имеет значение TTL. Вы можете поменять его на что угодно. Вы можете установить его на 60 секунд или, как правило, оставить более высокое значение и до изменения установить более низкое значение. Таким образом, изменения распространятся практически сразу.
Кроме того, certbot просит вас создать новую запись. Новые записи также распространяются очень быстро (в течение нескольких минут), поэтому вам не придется долго ждать проверки.