NET::ERR_CERT_DATE_INVALID: что значит и как исправить
NET::ERR_CERT_DATE_INVALID — Chrome считает, что сертификат сайта сейчас не действует: его срок истёк или ещё не начался. Причина бывает на стороне сайта — сертификат не продлили — или на стороне посетителя: на устройстве неверные дата и время.
Содержание 10
Что сделать прямо сейчас
Если вы просто открываете сайт:
- Посмотрите на дату и время на своём устройстве. Если они неверные, включите автоматическую установку времени — как это сделать, показано ниже, — и откройте сайт заново.
- Если дата и время верные, а ошибка только на этом сайте, у его сертификата, скорее всего, истёк срок. Сообщите владельцу сайта код ошибки — NET::ERR_CERT_DATE_INVALID.
- Пока предупреждение не исчезнет, не вводите на сайте пароли и данные банковских карт.
Если сайт ваш, переходите к разделам «Как проверить» и «Как исправить» ниже: там все команды по шагам.
Как включить автоматическую дату и время
Windows. Нажмите «Пуск» и откройте «Параметры» → «Время и язык» → «Дата и время». Включите «Установить время автоматически» и «Автоматическая установка часового пояса».
Mac. Откройте «Системные настройки» — они есть в меню Apple, значке яблока в левом верхнем углу экрана. Нажмите «Основные» в боковом меню, затем «Дата и время» — возможно, придётся прокрутить вниз. Включите «Получать дату и время с сервера» и «Автоматически выбирать часовой пояс в зависимости от текущей геопозиции».
iPhone. Откройте «Настройки» → «Основные» → «Дата и время» и включите «Устанавливать время автоматически».
Android. По справке Google это делается в приложении «Часы»: откройте его, нажмите «Ещё» → «Настройки» → «Изменить дату и время» и включите «Автоматическое определение даты и времени». Там же, в разделе «Часовой пояс», включите «Автоматическое определение часового пояса» — по справке Google, такая настройка есть не на всех устройствах. Если на телефоне другое приложение часов, пункты могут называться иначе.
Что значит ошибка
У каждого SSL-сертификата — электронного документа, которым сайт подтверждает браузеру, что он настоящий, — есть срок действия: дата начала и дата окончания. Chrome сравнивает их с датой и временем на устройстве. Если срок закончился или ещё не начался, он показывает NET::ERR_CERT_DATE_INVALID — в исходном коде Chrome это ошибка -201.
В исходном коде названы три возможные причины: сервер настроен неправильно и отдаёт недействительный сертификат, на устройстве неверные часы или злоумышленник подсовывает старый сертификат, к закрытому ключу которого получил доступ.
Сертификаты Let's Encrypt действуют 90 дней, и Let's Encrypt советует продлевать их каждые 60 дней. Если продление не сработало, сертификат истекает и ошибку видят все посетители сайта.
Как выглядит в Chrome
Страница такая же, как при других ошибках сертификата: вкладка «Ошибка нарушения конфиденциальности», заголовок «Подключение не защищено», код NET::ERR_CERT_DATE_INVALID и кнопки «Вернуться к безопасной странице» и «Дополнительные настройки».
В пояснении под «Дополнительными настройками» Chrome пишет, сколько дней назад истёк срок сертификата, показывает дату, которая стоит на устройстве, и спрашивает, правильное ли это время. Если нет, он советует исправить его и обновить страницу. Если сертификат ещё не начал действовать, Chrome пишет, через сколько дней это произойдёт.
Если на устройстве неправильная дата, Chrome может показать вместо этого страницу с заголовком «Часы спешат» или «Часы отстают».
Причины
- Сертификат не продлился. Например, он получен с ключом --manual — такие сертификаты Certbot без дополнительных скриптов не продлевает. Или перестал открываться сайт по http://: A-запись домена ведёт на другой сервер или закрыт порт 80, а через него Certbot подтверждает домен.
- Сертификат продлён, но nginx отдаёт старый. nginx читает файл сертификата, когда загружает настройки. Пока настройки не перезагружены, посетители получают прежний сертификат.
- На устройстве посетителя неверные дата и время. Тогда ошибка появляется на многих сайтах сразу.
- Злоумышленник подсовывает старый сертификат, к закрытому ключу которого получил доступ.
Как проверить
Команды из этого раздела вводятся в терминале сервера. Если вы ещё не подключались к нему, начните с инструкции Как подключиться к VPS по SSH. Скопируйте команду целиком, замените example.com на адрес своего сайта и нажмите Enter.
Шаг 1. Посмотрите срок действия сертификата
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null | openssl x509 -noout -datesОтвет — две строки: notBefore — с какого момента действует сертификат, notAfter — до какого. Время указано по Гринвичу (GMT), московское на 3 часа больше. Если дата в notAfter уже прошла, срок сертификата истёк.
Шаг 2. Посмотрите сертификаты Certbot
sudo certbot certificatesВ строке Expiry Date — дата окончания и в скобках состояние сертификата. Например, VALID: 45 days значит, что он действует ещё 45 дней, а INVALID: EXPIRED — что срок истёк. Если здесь срок в порядке, а в шаге 1 дата уже прошла, сертификат продлён, но nginx его ещё не подхватил: перезагрузите nginx, как описано ниже.
Шаг 3. Проверьте, работает ли автоматическое продление
sudo certbot renew --dry-runЭто пробное продление: Certbot проходит все шаги, но новый сертификат не сохраняет. Если всё в порядке, в конце будет строка Congratulations, all simulated renewals succeeded. Если там All simulated renewals failed, выше Certbot пишет, какой сертификат продлить не удалось и почему.
Затем проверьте, есть ли на сервере таймер, который запускает продление:
systemctl list-timers | grep certbotЕсли команда вывела строку со словом certbot, таймер есть. Если ничего не вывела, продление может быть настроено иначе, например через cron, — или не настроено совсем. Тогда получите сертификат заново по инструкции Бесплатный SSL-сертификат.
Как исправить
Продлите сертификат
sudo certbot renewCertbot продлевает сертификаты, у которых подходит срок: начиная с версии 4.0.0 — когда остаётся меньше трети срока действия, в более ранних версиях — за 30 дней до окончания. Домен он подтверждает тем же способом, каким сертификат получали. Если всё прошло успешно, Certbot напишет Congratulations, all renewals succeeded. Сертификаты, которым продление ещё не нужно, он перечислит под строкой The following certificates are not due for renewal yet.
Если продление не удалось, проверьте, что A-запись домена ведёт на этот сервер и сайт открывается по http://. Что такое A-запись, рассказано в статье Что такое домен. Сертификат, полученный с ключом --manual, так не продлить: получите его заново той же командой, которой получали в первый раз.
Перезагрузите nginx
sudo nginx -t
sudo systemctl reload nginxПервая команда проверяет настройки: в ответе должны быть слова syntax is ok и test is successful. Вторая применяет их — nginx заново прочитает файл сертификата. Выполняйте её только после успешной проверки. Затем повторите команду из шага 1: в строке notAfter должна появиться новая дата.
Чтобы nginx подхватывал новый сертификат сам
После каждого успешного продления Certbot запускает исполняемые файлы из папки /etc/letsencrypt/renewal-hooks/deploy — такие файлы называют хуками. Создайте там файл, который перезагружает nginx. Введите три команды по очереди:
sudo mkdir -p /etc/letsencrypt/renewal-hooks/deploy
printf '#!/bin/sh\nsystemctl reload nginx\n' | sudo tee /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh
sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.shПервая создаёт папку, если её ещё нет. Вторая записывает в файл reload-nginx.sh команду перезагрузки nginx и показывает содержимое файла на экране. Третья разрешает этот файл запускать.
Проверьте, что всё работает:
sudo certbot renew --dry-run --run-deploy-hooksС ключом --run-deploy-hooks Certbot после успешного пробного продления запускает и хуки. Если в конце строка Congratulations, all simulated renewals succeeded и нет сообщений об ошибках, всё настроено.
На обычном хостинге
На виртуальном хостинге сертификат продлевает хостинг. Проверьте в панели управления, в разделе об SSL, до какого числа действует сертификат и включено ли автоматическое продление. Если срок истёк, а продлить сертификат в панели не получается, напишите в поддержку адрес сайта и код ошибки.
Соседние ошибки
| Ошибка | Чем отличается |
|---|---|
| NET::ERR_CERT_COMMON_NAME_INVALID | Сертификат выдан для другого имени сайта |
| NET::ERR_CERT_AUTHORITY_INVALID | Chrome не доверяет тому, кто выпустил сертификат, — например, сертификат самоподписанный |
| NET::ERR_CERT_REVOKED | Центр сертификации отозвал сертификат до окончания срока |
| «Подключение не защищено» | Общая страница о предупреждении и всех кодах ошибок сертификата |
Источники
- Исходный код Chromium: net_error_list.h — ошибка -201 и три её причины.
- Исходный код Chromium: error_info.cc и русские строки Chrome — пояснения на странице предупреждения.
- Let's Encrypt: FAQ — срок действия сертификатов и совет продлевать их каждые 60 дней.
- Документация Certbot: продление сертификатов, управление сертификатами и параметры командной строки.
- Документация nginx: ssl_certificate.
- Справка о настройке даты и времени: Windows, Mac, iPhone, Android.
Текст предупреждения взят из исходного кода и переводов Chrome.
Сверено 8 октября 2026 года.
Что почитать дальше
- Бесплатный SSL-сертификат — как получить сертификат Let's Encrypt и настроить его продление.
- Как подключиться к VPS по SSH — как открыть терминал сервера, чтобы ввести команды.
- «Подключение не защищено» — все коды ошибок сертификата на одной странице.
Проверено и обновлено: 08.10.2026