Обновленный ответ (см. Оригинальный ответ ниже)
В своем первоначальном ответе я акцентировал внимание на том, что предоставленный вами скрипт не требуется при использовании renew
команды. Однако я не убедился, что renew
команда действительно применима в этом сценарии.
Как cdhowie и bobpaul в комментариях заявляют: certbot renew
это неинтерактивный режим, который - в сочетании с вызовом dns - требует предоставления сценария через --manual-auth-hook
параметр. Указанный скрипт должен быть в состоянии установить TXT
запись. Вы также можете предоставить другой сценарий для последующей очистки через --manual-cleanup-hook
параметр.
Если вы предоставите эти параметры, весь процесс будет выполняться автоматически без какого-либо взаимодействия.
Если вы не предоставите эти параметры, certbot потерпит неудачу:
/opt/certbot # certbot renew --force-renewal
Saving debug log to /var/log/letsencrypt/letsencrypt.log
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/foobar.w9f.de.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Could not choose appropriate plugin: The manual plugin is not working; there may be problems with your existing configuration.
The error was: PluginError('An authentication script must be provided with --manual-auth-hook when using the manual plugin non-interactively.',)
Если вы хотите обновить свои сертификаты в ручном режиме, вы должны повторно запустить команды, которые вы использовали для получения сертификатов. В этом случае ваш сценарий является хорошим вариантом, поскольку certonly
команда не просматривает существующие сертификаты / конфигурацию и вместо этого требует, чтобы вы указали доменные имена либо с помощью -d
параметра, либо в интерактивном режиме.
Когда я запускаю «certbot renew», он будет обновлять их все автоматически, без использования моего скрипта?
TL; DR: Да, так и должно быть.
Давайте посмотрим на документацию certbot :
Начиная с версии 0.10.0, Certbot поддерживает действие продления, чтобы проверить все установленные сертификаты на предмет предстоящего истечения срока действия и попытаться продлить их. Самая простая форма это просто
Certbot возобновить
Все идет нормально.
Эта команда пытается обновить все ранее полученные сертификаты, срок действия которых истекает менее чем за 30 дней.
Это должно ответить на ваш вопрос. Осторожно: я не знаю, насколько хорошо certbot
можно обрабатывать ситуации, когда вы перемещаете сертификаты в разные каталоги.
Позже в том же абзаце:
Тот же плагин и опции, которые использовались во время первоначального выпуска сертификата, будут использоваться для попытки продления, если вы не укажете другие плагины или опции. В отличие от certonly
, renew
действует на несколько сертификатов и всегда учитывает, близок ли срок действия каждого из них.
Так да; certbot
следует обновить все ваши сертификаты без помощи вашего скрипта.
Как мне на самом деле создать новый сертификат, используя DNS-запрос?
Что не так с командой, которую вы разместили в начале вашего сообщения?
certbot -d example.com --manual --preferred-challenges dns certonly
получит сертификат для example.com, используя вызов dns.
Шаги для создания сертификата:
- Запустите
certbot
команду, которую вы разместили
- Подождите, пока команда покажет вам запись TXT DNS
- Создать эту запись TXT
- Продолжить
certbot
команду
- Получить сертификат для указанного домена
- Удалите запись TXT (поскольку она нужна вам только для создания, а новая - для обновления)
Если вы хотите автоматизировать этот завершенный процесс, вы можете взглянуть на такой инструмент, как lego, который поддерживает несколько DNS-провайдеров .