Я использую Let's Encrypt на нескольких доменах уже пару месяцев, и в целом он работает. Я обновлял сертификаты, и для одного из доменов я получаю следующее сообщение об ошибке (в возвращенном объекте JSON по адресу challenges[1].error.detail
):
Проблема с DNS: истекло время запроса при поиске CAA для [somedomain.com]
Я попытался найти ошибку, но даже Google не нашел результатов (на момент написания этой статьи). Для скептиков: Да, этот домен (точно такой, как показано в сообщении об ошибке) действителен, полностью доступен и доступен для проверки связи издалека.
Однако здесь есть важное затруднительное положение (ключ), объясняющее, почему возникло это состояние. Я установил для этого домена в настройках перенаправить весь трафик на HTTPS когда я впервые попробовал продлить этот конкретный домен. Похоже, что LE попыталась получить доступ к серверу по HTTPS и потерпела неудачу. С тех пор я изменил настройки сервера, чтобы домен не перенаправлялся на HTTPS для папки acme-challenge. Проблема, похоже, в том, что LE запоминает, что предыдущий запрос был перенаправлен, и теперь не хочет получать доступ к URL-адресу HTTP. В challenges[1].validationRecord
имеет две записи, одну в [0] для HTTP и одну в [1] для HTTPS, поэтому очевидно, что LE знает, что к серверу можно получить доступ и по адресу HTTP. Более того, я могу получить доступ к файлу проверки валидации (в рассматриваемом домене) по URL-адресу, указанному в challenges[1].validationRecord[0].url
просто отлично без проблем.
У меня вопрос: как заставить LE забыть, что я пытался запросить сертификат, когда сервер настроен на перенаправление всего трафика на HTTPS? Следовательно, как мне заставить LE использовать вместо этого URL-адрес HTTP?
Let's Encrypt не отслеживает предыдущие перенаправления. Вы можете использовать версию HTTP или HTTP для проверки.
Ваша ошибка указывает на другую проблему
Проблема с DNS: истекло время запроса при поиске CAA для [somedomain.com]
Система проверки не смогла выполнить DNS-поиск домена. Возможно, у провайдера DNS, которого вы используете, возникла проблема, или что на маршруте между серверами Let's Encrypt и вашим сервером возникла проблема с сетью.
Это аналогичная проблема, описанный на официальном форуме сообщества LE.
Я думаю, проблема в шаге поиска DN. Нет записи CAA. Почему-то серверу доменных имен требовалось очень много времени, чтобы ответить. Вот некоторые результаты, которые мне прислал Осирис. Он упомянул, что получение IP-адреса происходит быстро, но «предпоследний шаг часто выполняется довольно медленно». Медлительность могла быть причиной неудач на этапе проверки CAA.
и
Основываясь на исходной ошибке и тех случаях, весьма вероятно, что есть некоторые проблемы с DNS-серверами, которые вы используете, или с маршрутом к ним из центра обработки данных Let's Encrypt, и это вызывает тайм-ауты.
Изучите настройки DNS и, если поиск прошел успешно, через некоторое время повторите попытку отправки запроса на сертификат.
В последней версии клиента acme обычно отображается целевой IP-адрес, срок действия которого истек. Похоже, что клиент выдает запросы к разным серверам имен во время процедуры запроса сертификата. Эти серверы включают, помимо прочего, DNS-сервер по умолчанию для машины и авторитетный сервер имен домена, который вы используете.
Я видел ситуацию, когда при идеальном сетевом соединении маршрут к авторитетному серверу имен был заблокирован на брандмауэре компании. (Я знаю, странно). Таким образом, хотя все имена (включая этот конкретный домен) разрешались отлично, когда клиент acme пытался напрямую связаться с официальным сервером имен, процесс не удался. Это было решено путем изменения правил брандмауэра, чтобы разрешить прохождение запроса.
Итак, для 2018 года и позже - посмотрите журналы, они обычно говорят вам, какой IP-адрес истекает, и проверяют подключение от клиента acme к этому адресу.