Продлить сертификат letsencrypt на Apache httpd

Я использую certbot - подключаемый модуль webroot и certbot refresh для обновления сертификата, который работает, но выглядит как ] httpd кэширует сертификат и не «видит», что он ' s обновлен.

Есть ли сигнал для httpd о перезагрузке сертификатов?

ps Я предпочитаю не перезапускать httpd , чтобы избежать простоев.

6
задан 9 August 2016 в 14:42
1 ответ

Чтобы заставить httpd заметить новые сертификаты, вам необходимо запросить, чтобы он выполнил « постепенный перезапуск ». Из документации:

USR1 или сигнал graceful заставляет родительский процесс посоветовать дочерним процессам выйти после их текущего запроса (или немедленно выйти, если они ничего не обслуживают). Родитель перечитывает свои файлы конфигурации и повторно открывает файлы журнала. Когда каждый дочерний элемент умирает, родитель заменяет его дочерним элементом из нового поколения конфигурации, который немедленно начинает обслуживать новые запросы.

Таким образом, такой плавный перезапуск не вызовет простоя.

Чтобы получить letsencrypt / certbot для запуска плавного перезапуска используйте аргумент - post-hook . Этот аргумент запускает команду один раз, если была предпринята попытка обновления сертификата. Из docs :

Команда, запускаемая в оболочке после попытки получить / обновить сертификаты. Может использоваться для развертывания обновленных сертификатов или для перезапуска любых серверов, остановленных с помощью --pre-hook. Это запускается только в том случае, если была сделана попытка получить / обновить сертификат. (по умолчанию: Нет)

Итак, вам нужна команда

certbot renew --post-hook "apachectl graceful"

или при запуске из задания cron

certbot renew --quiet --post-hook "apachectl graceful"

(Спасибо @RustyX за помощь с этим ответом)

8
ответ дан 3 December 2019 в 00:21

Теги

Похожие вопросы