Я создал несколько SSL-сертификатов для нескольких доменов автономным методом. Меня интересуют только сертификаты, без серверной интеграции.
Сейчас они на продление. Итак, я побежал:
certbot -d example.com --manual --preferred-challenges dns certonly
И следовал инструкциям для каждого домена (добавляя необходимую запись DNS для каждого из них). Таким образом, мне не пришлось останавливать сервер и получать новые сертификаты.
Мое (смутное) понимание всего этого заключается в том, что в настоящее время не существует способа автоматически обновлять сертификаты с помощью запроса DNS. А может у вас не получается автоматически обновлять сертификаты для "ручного" метода?
Во всяком случае, я написал этот сценарий:
#!/bin/bash
for i in renewal/*;do
n=${i:8:-5};
echo $n;
# echo "\n" | certbot --text --agree-tos -d $n --manual --preferred-challenges dns --expand --renew-by-default --manual-public-ip-logging-ok certonly;
done
На данный момент в renewal
каталог ВСЕ домены имеют:
аутентификатор = руководство
И:
pref_challs = dns-01
Вопросы:
Теперь ... когда я запускаю «certbot Renewing», обновит ли он их все автоматически без использования моего скрипта?
Как мне создать новый сертификат, используя для начала DNS-запрос?
В моем первоначальном ответе я сосредоточился на том факте, что предоставленный вами сценарий не требуется при использовании 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
параметр или в интерактивном режиме.
TL; DR: Да, должно.
Давайте посмотрим на документация certbot:
Начиная с версии 0.10.0 Certbot поддерживает действие обновления, чтобы проверить все установленные сертификаты на предмет приближающегося истечения срока действия и попытаться их обновить. Самая простая форма - это просто
certbot обновить
Все идет нормально.
Эта команда пытается обновить любые ранее полученные сертификаты, срок действия которых истекает менее чем через 30 дней.
Это должно ответить на ваш вопрос. Остерегайтесь: я не знаю, насколько хорошо certbot
может справиться с ситуациями, когда вы перемещаете сертификаты в разные каталоги.
Позже в том же абзаце:
Тот же плагин и параметры, которые использовались при первоначальной выдаче сертификата, будут использоваться для попытки продления, если вы не укажете другие плагины или параметры. в отличие
certonly
,renew
действует для нескольких сертификатов и всегда принимает во внимание, истекает ли срок действия каждого из них.
Так да; certbot
должен обновить все ваши сертификаты без помощи вашего скрипта.
Что не так с командой, которую вы разместили в начале сообщения? certbot -d example.com --manual --preferred-challenges dns certonly
получит сертификат для example.com, используя вызов dns.
Шаги по созданию сертификата:
certbot
команда, которую вы отправилиcertbot
командаЕсли вы хотите автоматизировать этот полный процесс, вы можете взглянуть на такой инструмент, как Лего который поддерживает пару Провайдеры DNS.