Из документов Плагин Certbot webroot
Плагин webroot работает, создавая временный файл для каждого из запрошенных вами доменов в
${webroot-path}/.well-known/acme-challenge
. Затем сервер проверки Let’s Encrypt отправляет HTTP-запросы для проверки что DNS для каждого запрошенного домена разрешается на сервер, на котором запущен certbot.
На домашнем сервере, используемом в частном порядке, у меня отключен порт 80, то есть в маршрутизаторе не включена переадресация портов. Я не собираюсь открывать этот порт.
Как я могу сообщить certbot, что сервер проверки должен делать не HTTP-запрос, а HTTPS-запрос (порт 443) для проверки права собственности на домен?
Серверу проверки не нужно даже проверять сертификат домашнего сервера, поскольку он уже использует HTTP по умолчанию. У меня может быть самозаверяющий сертификат или сертификат, который подлежит продлению, но это не имеет значения.
В настоящее время я нахожусь в ситуации, когда мне нужно включить переадресацию порта 80, а также сервер на нем для создания / обновления сертификатов. Это не позволяет мне использовать cronjob для обновления сертификата. Что ж, при достаточной работе это будет, но у меня уже есть сервер, прослушивающий 443, который также может выполнять эту работу.
Как сообщается в https://community.letsencrypt.org/t/shouldnt-verification-via-dns-record-be-a-priority/604/47 то letsencrypt.sh Updater поддерживает проверку через DNS. Кажется, это реализовано в нескольких скриптах обновлений. Однако метод HTTP является самым простым в реализации для начальной настройки.
Имеющийся у вас сценарий может использовать TNS SNI или подтверждение владения предыдущим ключом для продления. Спецификацию можно найти на https://tools.ietf.org/html/draft-ietf-acme-acme-01#section-7.5. В этом случае вам не нужно включать HTTP.