Назад | Перейти на главную страницу

Откуда Certbot обслуживает запросы HTTP-01?

Я диагностирую странную проблему с некоторыми из моих компьютеров 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 в этом не нуждался.