Ошибки

NET::ERR_CERT_COMMON_NAME_INVALID: что значит и как исправить

NET::ERR_CERT_COMMON_NAME_INVALID — Chrome не нашёл адрес сайта среди имён, для которых выпущен его сертификат. Например, сертификат получен только для example.com, а сайт открыли как www.example.com.

Обновлено 08.10.2026≈ 9 мин чтения
Содержание 10

Что сделать прямо сейчас

Если вы просто открываете сайт:

  1. Не вводите на этом сайте пароли и данные банковских карт, пока предупреждение не исчезнет: нельзя быть уверенным, что вы попали на настоящий сайт.
  2. Проверьте адрес в адресной строке: нет ли в нём опечатки. Попробуйте открыть сайт без www в начале адреса или, наоборот, с www — например, example.com вместо www.example.com.
  3. Если вы подключены к общественному Wi-Fi — в кафе, гостинице, метро, — возможно, сначала нужно войти на странице этой сети. Пока вход не выполнен, сеть может показывать свою страницу вместо нужной, и имя в сертификате не совпадёт с адресом.
  4. Если не помогло, сообщите владельцу сайта код ошибки — NET::ERR_CERT_COMMON_NAME_INVALID. Он написан под текстом предупреждения.

Если сайт ваш, переходите к разделам «Как проверить» и «Как исправить» ниже: там все команды по шагам.

Что значит ошибка

SSL-сертификат — это электронный документ, которым сайт подтверждает браузеру, что он настоящий. В сертификате перечислены имена, для которых он действует, — в поле Subject Alternative Name (сокращённо SAN). Chrome сравнивает с этим списком адрес из адресной строки. Если адреса в списке нет, он показывает NET::ERR_CERT_COMMON_NAME_INVALID — в исходном коде Chrome это ошибка -200.

Поле Common Name (CN), по которому названа ошибка, при проверке не используется: стандарт RFC 9525 требует сверять адрес сайта со списком имён SAN.

Звёздочка в начале имени заменяет ровно одну часть адреса. Сертификат на *.example.com подойдёт для shop.example.com, но не для example.com и не для a.shop.example.com.

Как выглядит в Chrome

Страница такая же, как при других ошибках сертификата: вкладка «Ошибка нарушения конфиденциальности», заголовок «Подключение не защищено», предупреждение, что злоумышленники, возможно, пытаются похитить данные, и код NET::ERR_CERT_COMMON_NAME_INVALID. Внизу — кнопки «Вернуться к безопасной странице» и «Дополнительные настройки».

«Дополнительные настройки» раскрывают пояснение: Chrome пишет, что не смог подтвердить, что это сервер нужного сайта, потому что сертификат относится к другому имени, и называет одно из имён из сертификата. По нему видно, для какого адреса сертификат выпущен на самом деле. Если в сертификате нет списка имён, Chrome сообщает, что в нём не указаны альтернативные варианты имён.

Причины

  • Сертификат выпущен не на все имена сайта. Например, Certbot запускали только с -d example.com, а посетители открывают www.example.com. Для браузера это два разных имени.
  • На сервере несколько сайтов, а у одного нет своего сертификата. Если имени shop.example.com нет ни в одном блоке server с портом 443, nginx отдаёт сертификат сайта по умолчанию, а он выпущен для другого имени.
  • Сайт открыли по IP-адресу сервера, а сертификат выпущен для доменного имени.
  • Звёздочка не подходит к адресу. Сертификат на *.example.com не действует для example.com и для a.shop.example.com.
  • Короткое имя в рабочей сети. Сайт открывают по имени intranet, а сертификат выпущен на полное имя intranet.example.com.
  • Сеть подменяет страницы. Так бывает в общественном Wi-Fi до входа на странице сети или при попытке перехватить данные: браузер получает сертификат другого сайта.

Если сертификат к тому же самоподписанный, Chrome покажет другую ошибку — NET::ERR_CERT_AUTHORITY_INVALID: из нескольких проблем он сообщает о более серьёзной. Так было и на нашем тестовом сервере в Chrome 155.

Как проверить

Команды из этого раздела вводятся в терминале сервера. Если вы ещё не подключались к нему, начните с инструкции Как подключиться к VPS по SSH. Скопируйте команду целиком, замените example.com на адрес своего сайта и нажмите Enter.

Шаг 1. Посмотрите, для каких имён выпущен сертификат

Подставьте в команду тот адрес, на котором появляется ошибка, — в обоих местах:

openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null | openssl x509 -noout -text | grep -A1 "Subject Alternative Name"

Команда соединяется с сайтом так же, как браузер, и показывает список имён из сертификата. Ответ — две строки, во второй будут имена вида DNS:example.com, DNS:www.example.com. Адрес, на котором появляется ошибка, должен быть в этом списке. Если второй строки нет, в сертификате нет списка имён и его нужно выпустить заново.

Шаг 2. Посмотрите, какие сертификаты выпустил Certbot

sudo certbot certificates

Certbot покажет все свои сертификаты. У каждого есть строка Certificate Name — название сертификата, строка Domains — имена, для которых он выпущен, и строка Certificate Path — где лежит файл. Если нужного имени нет ни в одной строке Domains, сертификат для него не выпускали.

Шаг 3. Проверьте настройки nginx

sudo nginx -T | grep -E 'server_name|ssl_certificate'

Команда выведет из всех настроек nginx строки с именами сайтов (server_name) и путями к сертификатам (ssl_certificate). Строки идут в том порядке, в каком записаны в настройках, поэтому имя сайта и его сертификат окажутся рядом. Для каждого имени, которое открывают по https://, должен быть указан сертификат, в котором это имя есть.

Как исправить

Выпустите сертификат на все имена сайта

Сначала убедитесь, что каждое имя ведёт на ваш сервер. В настройках домена для www должна быть A-запись с IP-адресом сервера — что это такое, рассказано в статье Что такое домен. И сайт должен открываться по http://: через порт 80 Certbot подтверждает, что домен ваш.

Затем выпустите сертификат заново, перечислив все имена:

sudo certbot certonly --nginx --cert-name example.com -d example.com -d www.example.com

После --cert-name укажите название сертификата из строки Certificate Name (шаг 2), после каждого -d — одно имя сайта. Certbot спросит, точно ли нужно изменить список имён (Did you intend to make this change?): введите U — Update certificate — и нажмите Enter.

Если всё прошло успешно, Certbot напишет Successfully received certificate и покажет, где лежат файлы. Сертификат с тем же названием остаётся в той же папке /etc/letsencrypt/live/example.com/, поэтому пути в настройках nginx менять не нужно. Если Certbot сообщает об ошибке проверки домена, значит новое имя ведёт не на этот сервер или закрыт порт 80.

Теперь проверьте, что в блоке server с портом 443 перечислены оба имени. Файл настроек сайта лежит в папке /etc/nginx/sites-available/ — это тот файл, который вы создавали по инструкции Как разместить сайт на VPS: nginx с нуля. Откройте его командой sudo nano /etc/nginx/sites-available/example.com, найдите блок server со строкой listen 443 и сверьте строки server_name и ssl_certificate — они должны быть такими:

server {
    listen 443 ssl;
    server_name example.com www.example.com;
    ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    # остальные строки блока оставьте без изменений
}

Если что-то пришлось исправить, сохраните файл — Ctrl+O, Enter, затем Ctrl+X — и проверьте настройки:

sudo nginx -t

В ответе должны быть слова syntax is ok и test is successful. Если вместо них сообщение об ошибке, в нём указаны файл и номер строки: исправьте строку и проверьте снова. Когда проверка прошла, примените настройки:

sudo systemctl reload nginx

Если команда ничего не ответила, настройки применены.

Если на сервере несколько сайтов

Каждому сайту нужен свой сертификат и свой блок server с портом 443. Например, для shop.example.com сначала выпустите сертификат:

sudo certbot certonly --nginx -d shop.example.com

Затем укажите его в блоке server этого сайта:

server {
    listen 443 ssl;
    server_name shop.example.com;
    ssl_certificate     /etc/letsencrypt/live/shop.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/shop.example.com/privkey.pem;
    # остальные строки блока оставьте без изменений
}

После правок сохраните файл — Ctrl+O, Enter, затем Ctrl+X — и проверьте настройки:

sudo nginx -t

Если в ответе есть слова syntax is ok и test is successful, примените настройки:

sudo systemctl reload nginx

Переадресация с www не заменит сертификат

Если сайт должен открываться только без www, переадресация (редирект) с www.example.com на example.com ошибку не уберёт: браузер проверяет сертификат раньше, чем получает переадресацию. Поэтому сертификат нужен на оба имени, а переадресацию настраивают уже в блоке server для www — как, рассказано в статье Редирект 301 Moved Permanently: что значит и как настроить.

На обычном хостинге

На виртуальном хостинге сертификат выпускают в панели управления, в разделе об SSL. Проверьте, для каких имён он выпущен: если www или поддомена нет в списке, выпустите сертификат заново с нужными именами. Где это в панелях разных хостеров — в таблице статьи Бесплатный SSL-сертификат. Если имена указаны верно, а ошибка остаётся, напишите в поддержку адрес сайта и код ошибки.

Соседние ошибки

ОшибкаЧем отличается
NET::ERR_CERT_AUTHORITY_INVALIDChrome не доверяет тому, кто выпустил сертификат, — например, сертификат самоподписанный
NET::ERR_CERT_DATE_INVALIDСрок сертификата истёк или на устройстве неверные дата и время
NET::ERR_CERT_REVOKEDЦентр сертификации отозвал сертификат
«Подключение не защищено»Общая страница о предупреждении и всех кодах ошибок сертификата

Источники

Текст предупреждения взят из исходного кода и переводов Chrome.

Сверено 8 октября 2026 года.

Что почитать дальше

Проверено и обновлено: 08.10.2026