Уязвимости автоматического продления Certbot

У меня есть certbot, включающий автоматическое обновление, которое используется в нескольких установках с клиентами.

Я читал здесь:

https://community.letsencrypt.org/t/2018-01-11-update-regarding-acme-tls-sni-and-shared-hosting-infrastructure/50188

здесь

https://community.letsencrypt.org/t/solution-client-with-the-currently-selected-authenticator-does-not-support-any-combination-of-challenges-that-will-satisfy-the-ca/49983

и тут

https://github.com/certbot/certbot/issues/5405

а также здесь:

https://community.letsencrypt.org/t/important-what-you-need-to-know-about-tls-sni-validation-issues/50811

Кажется, все говорят что-то немного другое

и не дано четкого объяснения.

Читал в стандартном описании установки certbot

Документы для продления указывают здесь:

https://certbot.eff.org/docs/using.html#renewal

но: старый уязвимый метод tls-sni-01 все еще указан

Я пытаюсь резюмировать:

В руководствах по устранению существующих проблем на существующих серверах:

они рекомендуют останавливать и запускать сервер при обновлении. Но ... это нехорошо. Что, если некоторая конфигурация сломается, и сервер перестанет запускаться, когда я сплю? Сервер будет недоступен. Или что-то похуже. Я не эксперт DevOps, но запуск и остановка сервера более или менее случайным образом не кажутся хорошим решением. Я ошибаюсь в этом?

В качестве альтернативы я вижу только подключаемый модуль webroot, который не использует tls-sni-01. https://certbot.eff.org/docs/using.html#webroot

это кажется мне единственным надежным способом.

Я что-то упускаю? нам в основном говорят использовать плагин webroot?

поскольку все остальные используют tls-sni-01, они не автоматизированы (вы можете сделать это вручную, но я на самом деле не хочу) или не требуют, чтобы у вас уже был работающий сервер (автономный).

Это для будущих серверов. Я предполагаю, что продление существующих доменов продолжит работать со старым tls-sni-01, это то, о чем они, похоже, говорят.


person Toskan    schedule 26.02.2018    source источник


Ответы (1)


так как я не получил ответов, мне придется предположить, что это то, что есть, например по возможности используйте плагин webroot.

На самом деле я выяснил следующее:

команда certbot renew переходит в папку /etc/letsencrypt/renewal и проверяет там файлы конфигурации. Эти файлы конфигурации создаются при последнем запуске процесса сертификации из командной строки. Поэтому, если последнее, что вы сделали, было использование автономной версии, вы найдете там автономную конфигурацию (вы хотите перейти от нее)

Хорошо, теперь вы запускаете плагин webroot в первый раз:

certbot certonly --webroot -w /var/www/html/www.mypage.com/public -d www.mypage.com -d mypage.com см. Здесь

это может, в конечном итоге, создать новую запись в /etc/letsencrypt/renewal или перезаписать старую существующую. Просто не забудьте удалить автономный файл, если он не перезаписал, а создал новый файл, вы хотите, чтобы там был только корневой веб-файл.

теперь запускать crontab -e в конечном итоге должен быть пользователь root

Добавить

53 14 * * * certbot renew --post-hook "service nginx reload"

это будет запускаться каждый день в 14:53 и перезагрузить конфигурацию и попытаться обновить сертификаты.

person Toskan    schedule 03.03.2018
comment
Будьте осторожны с использованием crontab, так как certbot автоматически добавляет задание cron для автоматического обновления и таймер при установке. Лучше добавить туда ваш --post-hook, чтобы у вас не было двух заданий, выполняющих одно и то же. Дополнительная информация здесь: gist.github.com/jonasva/be3f89f6a06f80692920b87afbb602bc - person Jones03; 06.03.2018
comment
@ Jones03 это интересная информация ... пожалуйста, добавьте ответ, я могу передать вам принятый ответ (я думаю). Кстати, я не совсем понимаю ваши инструкции. Например. Once you've established that the timer is running не знаю, как убедиться, что он работает. Вы также написали, что если он запущен, он не выполняет задание cron. Немного запутался - person Toskan; 06.03.2018
comment
@ Jones03 Я только что выполнил новую установку на новой капле certbot, используя их базовую настройку, и он выполнил HTTP-аутентификацию, например sudo certbot --nginx сделал бы http-01 или что-то в этом роде, а не уязвимое ... полная путаница - person Toskan; 07.03.2018