Я диагностирую странную проблему с некоторыми из моих компьютеров Ubuntu 14 LTS / Apache 2.4 с обновлениями Certbot. Да, я знаю, что Ubuntu 14 LTS скоро станет EOL; это некоторые из отставших машин в списке восстановления.
По сути, Certbot какое-то время хорошо работал на этих машинах, а обновления выполнялись через задание cron. Где-то между октябрем и сейчас обновления не давали результата с ошибкой 403 во время испытания HTTP-01:
Detail: Invalid response from
http://example.com/.well-known/acme-challenge/asdkjhfaklsjdfhalksdjfhkljasdfh:
"<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML
2.0//EN\">\n<html><head>\n<title>403
Forbidden</title>\n</head><body>\n<h1>Forbidden</h1>\n<p"
To fix these errors, please make sure that your domain name was
entered correctly and the DNS A/AAAA record(s) for that domain
contain(s) the right IP address.
Я диагностировал проблему до того, что известный каталог был запрещен во время проблем из-за конфигурации Apache ( Require all denied
на /).
В качестве временной меры я обновляю сертификаты вручную на временном Require all allowed
on /, но хочу исправить это должным образом.
Итак, откуда на самом деле Certbot решает задачи? Я попробовал
<Directory /var/lib/letsencrypt/http_challenges>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
но это, похоже, не сработало. Из-за ограничения числа угадывание и проверка выполняются медленно.
Запросы обслуживаются из / var / lib / letsencrypt / http_challenges. Я думаю, это связано с certbot 0.28.0 изменения и EOL для TLS-SNI-01
На моих машинах с Ubuntu 14.04 / Apache 2.4.7 требовалось две вещи.
Пришлось снять блокировку root. Я отредактировал /etc/apache2/conf-enabled/security.conf, а также добавил, откуда одновременно обслуживаются задачи.
<Directory />
AllowOverride None
Require all granted
</Directory>
<Directory /var/lib/letsencrypt/http_challenges>
AllowOverride All
Require all granted
</Directory>
Перезапустите Apache и выполните пробный запуск certbot.
$ sudo service apache2 restart
$ sudo certbot renew --dry-run
Затем верните блокировку:
<Directory />
AllowOverride None
Require all denied
</Directory>
<Directory /var/lib/letsencrypt/http_challenges>
AllowOverride All
Require all granted
</Directory>
Повторите пробный запуск Apache restart certbot
$ sudo service apache2 restart
$ sudo certbot renew --dry-run
На этом этапе вызовы HTTP-01 показали успех. В моем случае я форсировал проблему отключения TLS-SNI-01, принудительно обновил свои сертификаты и убедился, что они используют вызовы HTTP-01.
Мне действительно жаль, что я не знал, зачем нужна эта последовательность, а не просто по счастливой случайности. Я не думаю, что это была случайность, поскольку мне нужно было проделать точно такие же действия на ~ 10 машинах. Ни один из моих новых серверов Ubuntu в этом не нуждался.