Сертификат не обновился - разбор причин отказа
Браузер закрывает сайт предупреждением о сертификате, хотя автопродление считалось настроенным. Сервер отдаёт просроченный сертификат, сертификат на чужое имя или неполную цепочку. Разбираем причины по убыванию частоты.
С чего начать
Смотрим, что отдаёт сервер прямо сейчас:
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null \ | openssl x509 -noout -dates -subject -issuer# -servername обязателен: без него сервер отдаст сертификат сайта по умолчаниюcurl -sI https://example.com | head -n 1 # первая строка ответа самого сайтаТри строки ответа делят причины пополам сразу. Истёкшая дата уводит к заданию на продление, чужое имя в поле subject - к составу самого сертификата.
Сверяем имена, на которые выпущен сертификат:
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null \ | openssl x509 -noout -ext subjectAltName # все имена сайта, включая wwwecho | openssl s_client -connect example.com:443 -showcerts 2>/dev/null \ | grep -c 'BEGIN CERTIFICATE' # один сертификат означает обрыв цепочкиИмя из адресной строки обязано присутствовать в этом списке целиком. Домен с префиксом www и домен без него браузер считает двумя разными именами.
Сравниваем файл на диске с ответом веб-сервера:
nginx -T | grep -n 'server_name\|ssl_certificate' # какие файлы читает серверopenssl x509 -noout -dates -in /path/to/fullchain.pem # срок внутри самого файлаls -l --time-style=long-iso /path/to/fullchain.pem # дата последнего продленияСвежий файл рядом с устаревшим ответом означает, что службы работают по старой конфигурации. Тогда причина не в выпуске, а в перезапуске служб.
Ищем само задание на продление:
grep -rn 'dehydrated\|certbot' /etc/cron.d/ /etc/crontab # задание в расписании сервераsystemctl list-timers | grep -i cert # таймер системы вместо заданияЗадание заводит команда выпуска, а не установка файлов руками. Пустое расписание объясняет отказ целиком: продлевать сертификат оказалось некому.
Читаем журнал последнего продления:
tail -n 40 /home/bitrix/dehydrated_update.log # журнал обрывается на неудачном шагеgrep -n 'invalid\|unauthorized' /home/bitrix/dehydrated_update.logСтрока про недействительную проверку уводит к правилам веб-сервера и к записям домена. Отказ в правах означает, что проверяющий запрос ушёл на чужой адрес.
Причины
-
Задание на автопродление не выполняется примерно 30% случаев
ПризнакСрок сертификата истёк ровно через девяносто дней после ручного выпуска.
ПроверкаИщем строку задания в расписании сервера и смотрим дату последней записи журнала продления.
Что делатьПеревыпускаем сертификат пунктом меню окружения: задание на продление создаёт именно оно.
-
Проверка владения доменом не проходит примерно 25% случаев
ПризнакЖурнал обрывается сообщением о недействительной проверке или об отказе в правах.
ПроверкаКладём файл в служебный каталог проверки и открываем его снаружи по незащищённому адресу.
Что делатьИсключаем служебный путь из переадресации и правил блокировки, затем повторяем выпуск.
-
Домен указывает не на этот сервер примерно 15% случаев
ПризнакПроверка уходит на чужой адрес, чаще всего по забытой записи адреса шестой версии.
ПроверкаСмотрим записи домена обеих версий протокола и сверяем их с внешним адресом сервера.
Что делатьУбираем неверную запись у домена либо правим её на действующий адрес сервера.
-
Сертификат выпущен на другое имя сайта примерно 12% случаев
ПризнакБраузер сообщает, что сертификат выдан для другого сайта, хотя срок его не вышел.
ПроверкаСверяем список имён сертификата с доменом из адресной строки и с псевдонимами сайта.
Что делатьПеревыпускаем сертификат сразу на все имена сайта, включая домен с префиксом www.
-
После продления службы не перечитали файлы примерно 10% случаев
ПризнакФайл на диске свежий, а снаружи сайт по-прежнему отдаёт истёкший сертификат.
ПроверкаСравниваем срок в файле конфигурации со сроком, который сервер отдаёт по сети.
Что делатьПерезагружаем конфигурацию веб-сервера, а при внешней защите сбрасываем кэш посредника.
-
В пуле сертификат заведён только у одного сайта примерно 8% случаев
ПризнакСоседний сайт сервера открывается с сертификатом первого домена пула.
ПроверкаСмотрим состав пула и сверяем блоки веб-сервера: у каждого домена свои пути к файлам.
Что делатьВыпускаем сертификат каждому сайту пула отдельно, через меню и от имени этого сайта.
Частые вопросы
Не обновляется сертификат в BitrixVM, куда смотреть первым делом?
В журнал продления на сервере. Он показывает шаг, на котором продление остановилось, и это либо проверка владения доменом, либо отсутствие самого задания.
Обновил сертификат сторонним клиентом, а сайт всё равно не защищён.
Окружение читает свои пути к файлам, а сторонний клиент кладёт их в собственный каталог. Сертификат подключают через меню сайта либо прописывают его пути в конфигурации.
Почему при продлении пишет, что проверка недействительна?
Проверяющий запрос не получил ожидаемый ответ по незащищённому адресу. Мешают переадресация на защищённый протокол, блокировка служебных путей и чужой адрес в записях домена.
Сертификат продлился, а веб-сервер отдаёт старый. Что делать?
Перезагрузить конфигурацию веб-сервера: он держит прочитанный сертификат в памяти. Если снаружи старый ответ остался, его кэширует защитный сервис перед сайтом.
После замены сертификата встал обмен с 1С, связано ли это?
Да, если в файле нет промежуточной цепочки. Браузер компьютера достраивает её сам, а учётная система и мобильный клиент считают такой сертификат недоверенным.
Смежное
- BitrixVM и веб-окружение - оглавление подтемы
- SSL-сертификат в BitrixVM: выпуск, продление, перенос - порядок работ по выпуску и переносу
- Меню окружения и службы - как перезапустить службы после продления
- Журналы сервера: где лежат, что смотреть, ротация - где искать записи об отказе
- Сайты в пуле BitrixVM: добавление, каталоги, права и доступ - привязка домена к своему сайту пула
- Окружение за прокси и в облаке: адреса, протокол, доступ наружу - когда перед сайтом стоит защитный сервис
- Переезд на HTTPS: контент, база, интеграции - что правят после выпуска сертификата
- Заголовки безопасности и доступ в админку: HSTS, фреймы, адреса - постоянный защищённый протокол и его цена
- Инфраструктура и эксплуатация - устройство серверной части целиком