Certbot убивает мой сервер apache

Поэтому время от времени я получаю электронное письмо о недоступности apache. Я имею в виду, что он активно отклоняет соединения (ERR_CONNECTION_REFUSED для Chrome).

systemctl status apache2
● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Tue 2020-06-09 14:36:58 CEST; 8min ago
  Process: 2533 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS)
  Process: 4325 ExecReload=/usr/sbin/apachectl graceful (code=exited, status=0/SUCCESS)
  Process: 20597 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
 Main PID: 20603 (code=exited, status=0/SUCCESS)

Системный журнал

Jun  9 14:36:01 f CRON[2494]: (www-data) CMD (php /var/www/avg.php)
Jun  9 14:36:57 f systemd[1]: Starting Certbot...
Jun  9 14:36:58 f apachectl[2533]: httpd (no pid file) not running
Jun  9 14:37:01 f CRON[2544]: (www-data) CMD (php /var/www/avg.php)
Jun  9 14:37:25 f systemd[1]: Started Certbot.
Jun  9 14:37:25 f systemd[1]: certbot.timer: Adding 2h 47min 35.570277s random time.
Jun  9 14:37:25 f systemd[1]: certbot.timer: Adding 1h 45min 16.226705s random time.

В последнюю секунду был запущен apache и ведение журнала было в 09 / Jun / 2020: 14: 36: 02 (это сервер, который получает группу запросов от cron с других серверов раз в минуту, так что это Совершенно здорово, что в течение последней минуты не было никаких записей в журнале.)

Я пробовал обновить certbot, но похоже, что это последняя возможная версия.

certbot is already the newest version (0.28.0-1~deb9u2).
python-certbot-apache is already the newest version (0.28.0-1~deb9u1).

Это происходило не в первый раз, и я не так много нашел в Интернете. Каковы следующие шаги, которые я могу сделать, чтобы найти предупреждение?

РЕДАКТИРОВАТЬ: /var/log/letsencrypt.log

2020-06-09 14:36:58,199:INFO:certbot.hooks:Running pre-hook command: apachectl -k stop
2020-06-09 14:36:58,250:INFO:certbot.main:Renewing an existing certificate

в конце

2020-06-09 14:37:25,395:DEBUG:certbot.renewal:no renewal failures
2020-06-09 14:37:25,395:INFO:certbot.hooks:Running post-hook command: apachectl -k start

Есть ли способ настроить certbot не на порт 80, а на какой-то другой так что мне не нужно, чтобы мой apache останавливался во время обновления (и в самый неподходящий момент)?

0
задан 9 June 2020 в 16:23
3 ответа

Как упоминал Рамиль Матрасов, вы настроили Certbot для запуска собственного веб-сервер, т.е. в автономном подключаемом модуле , тогда как вместо этого вы должны были использовать подключаемый модуль webroot . Ваша конфигурация заставляет Certbot останавливать Apache, чтобы он мог привязаться к порту 80 . Кроме того, задача DNS-01, предложенная Хенриком Пингелем, кажется излишне сложной для вашего варианта использования.

Webroot

Если вы используете локальный веб-сервер, для которого у вас есть возможность изменить обслуживаемый контент, и вы бы предпочли не останавливать веб-сервер в процессе выдачи сертификата, вы можете использовать плагин webroot для получения сертификата, включив certonly и - веб-корневой каталог в командной строке. Кроме того, вам необходимо указать - webroot-path или -w с каталогом верхнего уровня («корневой веб-сайт»), содержащим файлы, обслуживаемые вашим веб-сервером.

Однако отображение того, что вы должны были сделать , на самом деле не поможет вам решить текущую проблему: вы также можете изменить текущие настройки , изменив файлы конфигурации в / и т.д. / letsencrypt / возобновление . Например. в example.com.conf у вас могут быть:

[renewalparams]
authenticator = standalone
webroot_path = /home/letsencrypt,
[[webroot_map]]
example.com = /home/letsencrypt
www.example.com = /home/letsencrypt

Замените Authenticator = standalone на Authenticator = webroot для каждого файла конфигурации, а также убедитесь, что webroot_path или карты соответствуют тем, которые есть в вашем Apache s, например

[renewalparams]
authenticator = webroot
[[webroot_map]]
example.com = /var/www/example.com
www.example.com = /var/www/example.com

. Вы можете протестировать новую конфигурацию с помощью certbot Renew --dry-run .

1
ответ дан 4 January 2021 в 09:18

вы неправильно сконфигурировали certbot, certbot может использовать apache в качестве веб-сервера для обработки AMCE-запроса .. и вы настроили его для использования его собственного встроенного веб-сервера. вы должны сделать так:

./certbot-auto certonly --webroot -d host.example.com --webroot-path /var/www/html

когда вы это сделаете один раз, просто crontab this:

certbot-auto renew

эта конфигурация будет использовать / var / www / html для создания хорошо известного каталога с вызовом и использования вашего apache.

2
ответ дан 4 January 2021 в 09:18

Настройте certbot для использования запроса DNS-01 вместо запроса HTTP-01 .

1
ответ дан 4 January 2021 в 09:18

Теги

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