Давайте зашифруем проверку certbot через HTTPS

16

Из документов плагина Cerrobot webroot

Плагин webroot работает путем создания временного файла для каждого из ваших запрошенных доменов в ${webroot-path}/.well-known/acme-challenge. Затем сервер проверки Let's Encrypt отправляет HTTP-запросы для проверки того, что DNS для каждого запрашиваемого домена разрешается на сервере, на котором выполняется certbot.

На частном домашнем сервере у меня отключен порт 80, то есть переадресация портов не включена в маршрутизаторе. Я не собираюсь открывать этот порт.

Как я могу сказать certbot, что сервер проверки должен делать не HTTP-запрос, а HTTPS (порт 443), чтобы подтвердить право собственности на домен?

Серверу валидации даже не нужно проверять сертификат домашнего сервера, поскольку он по умолчанию уже использует HTTP. У меня может быть самозаверяющий сертификат или сертификат, который подлежит обновлению, но это не должно иметь значения.

В настоящее время я нахожусь в ситуации, когда мне нужно включить переадресацию порта 80, а также сервер на нем для создания / обновления сертификатов. Это не позволяет мне использовать cronjob для продления сертификата. Ну, с достаточным количеством работы, это было бы, но у меня уже есть сервер, слушающий 443, который мог бы сделать работу также.

Даниэль Ф
источник

Ответы:

8

Как сообщили в https://community.letsencrypt.org/t/shouldnt-verification-via-dns-record-be-a-priority/604/47 в letsencrypt.sh программы обновления проверки опор через DNS. Немногие сценарии обновления, кажется, реализовали это. Тем не менее, метод HTTP является самым простым для реализации для начальной настройки.

Сценарий, который у вас есть, может использовать TNS SNI или Доказательство владения априорным ключом для продлений. Спецификация может быть найдена в https://tools.ietf.org/html/draft-ietf-acme-acme-01#section-7.5 . Если это так, вам не нужно будет включать HTTP.

BillThor
источник
Спасибо, я забыл про проверку на основе DNS. Было относительно трудно найти какую-либо информацию о нем, так как в документах об этом практически не упоминается. Для Namecheap нет хука, поэтому я попытаюсь реализовать его и проверить, как он работает. Я приму ответ, если он будет работать, как ожидалось, но это может занять некоторое время, так как в настоящее время нет доменов для обновления. В противном случае мне придется испечь команду --webroot на сервере, чтобы сервер действовал как оболочка, которую можно заделать.
Даниэль Ф
Только что проверил, API Namecheap довольно плох (переписать ВСЕ записи, чтобы добавить или изменить одну), DNS не вариант в этом случае. Я также использую другие регистраторы, что усложняет задачу (управление ключами API). Ключ API Namecheap дает вам даже возможность регистрировать новые домены или переносить домены, это небезопасно как FK.
Даниэль Ф
@DanielF Я ожидаю, что ни проверка DNS, ни проверка HTTP не будут использоваться для обновления. В этом нет необходимости, так как ваши серверы должны передавать TLS SNI для существующего сертификата, и запрос может быть подписан с помощью существующего сертификата. Либо должно хватить. DNS и HTTP являются разумными методами для регистрации. У вас должно быть 30 дней для решения проблем, когда ваш первый сертификат будет продлен.
BillThor