Не удается обновить сертификат Let's Encrypt: диагностика ошибки 403
Сертификат Let's Encrypt истек, и его автоматическое обновление через клиент win-acme завершается неудачей. Процесс выпуска нового сертификата прерывается на этапе проверки домена (HTTP-01 challenge).
Симптомы и ошибка
Клиент win-acme создает файл проверки в директории /.well-known/acme-challenge/. Логи Apache фиксируют запрос к этому файлу, однако win-acme получает от серверов Let's Encrypt ошибку:
- Код ошибки: 403 (Forbidden)
- Тип ошибки:
urn:ietf:params:acme:error:unauthorized - Сообщение: "Invalid response from [домен]: 403"
Интересно, что в логах Apache указан локальный адрес как источник запроса, а не внешний IP-адрес серверов Let's Encrypt.
Предпринятые действия
Для диагностики проблемы были выполнены следующие шаги:
- Переключение веб-сервера: Исходная конфигурация Apache была временно заменена на конфигурацию для Nginx. Результат остался прежним - ошибка 403.
- Настройка редиректа с HTTPS на HTTP: Чтобы избежать ошибки браузера
NET::ERR_CERT_DATE_INVALIDпри ручном посещении сайта, были настроены правила перенаправления всех HTTPS-запросов на порт 80 (HTTP). Однако это не решило основную проблему с проверкой от Let's Encrypt.
Конфигурация веб-серверов (пример от DeepSeek)
Была применена следующая структура конфигурации:
Виртуальный хост на порту 80 (HTTP)
- Корневая директория сайта:
E:/1. - Явное разрешение доступа к директории
/.well-known/acme-challenge/для прохождения проверки. - Правило редиректа, преобразующее все HTTPS-запросы в HTTP.
Виртуальный хост на порту 443 (HTTPS)
- Использование просроченного сертификата для возможности работы на порту.
- Игнорирование различных проверок SSL для отладки.
- Глобальное правило редиректа ВСЕХ запросов с HTTPS на HTTP-версию сайта.
- Добавлен заголовок
X-SSL-Redirectдля отладки.
Ключевой вопрос
Почему серверы Let's Encrypt, запрашивая файл проверки по HTTP, получают в ответ код ошибки 403 (Доступ запрещен), несмотря на явно разрешенный доступ в конфигурации и наличие файла на диске?