#Что означает ошибка
Сертификат выдан для другого домена NET::ERR_CERT_COMMON_NAME_INVALID
Браузер проверяет, что имя в адресной строке указано в сертификате (в полях CN или SAN). Если сертификат выдан на другое имя, не включает www или запрос попал в виртуальный хост по умолчанию с чужим сертификатом, возникает ошибка NET::ERR_CERT_COMMON_NAME_INVALID. Обращение по IP-адресу тоже вызывает эту ошибку, так как сертификаты выдаются на доменные имена.
#Причины и решения
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Сертификат выпущен на другое имяСертификат на другой домен. | В сертификате иные имена. | Перевыпустите. |
| Запрос попал в виртуальный хост по умолчаниюНет VirtualHost для домена. | Видны чужие данные. | Добавьте VirtualHost. |
| Нет сертификата для wwwСертификат без www. | www даёт ошибку, без www работает. | Добавьте имя. |
| Обращение по IPСайт открыт по IP. | Адрес — цифры. | Используйте домен. |
#Пошаговое решение
- Проверьте сертификатОткройте сайт в браузере по полному адресу с
https://и проверьте, на каком именно имени появляется ошибка:example.ru,www.example.ruили другом поддомене. Нажмите значок сведений о подключении и откройте сведения о сертификате без обхода предупреждения. Сравните запрошенный адрес со списком Subject Alternative Name (SAN); отсутствие точного имени означает, что сертификат не подходит. - Проверьте через opensslАдминистратор Apache: подключитесь к серверу по SSH и выполните
sudo apachectl -S, чтобы увидеть виртуальные хосты для 443 и ихServerName/ServerAlias. Сравните с DNS-записями проблемного домена. При нескольких сайтах на одном IP важно, какой виртуальный хост выбран по SNI: неверный default может отдавать чужой сертификат. Не меняйтеServerNameнаугад без проверки всех сайтов на адресе. - Проверьте VirtualHostПосмотрите в конфигурации конкретного
<VirtualHost *:443>путиSSLCertificateFileиSSLCertificateKeyFile. Проверьте, что выбран файл полного сертификата для нужного домена и он не перепутан с сертификатом соседнего сайта. Для просмотра имён в PEM используйтеopenssl x509 -in /путь/к/fullchain.pem -noout -ext subjectAltName; путь берите из своего конфига. Приватный ключ не выводите и не передавайте в поддержку. - Задайте ServerName и ServerAliasЕсли сертификат не содержит нужного имени, перед выпуском проверьте, что A/AAAA-записи домена направлены на этот сервер и доступен способ проверки владения доменом. Затем используйте Certbot только если он установлен и подходит для вашей схемы Apache: например,
sudo certbot --apache -d example.ru -d www.example.ruпосле замены примеров на свои имена и успешной предварительной проверки. На панели хостинга выбирайте выпуск сертификата через панель вместо ручного изменения конфигов. - Перевыпустите сертификатЕсли сертификат верный, но сервер отдаёт другой, проверьте порядок выбора виртуального хоста на 443 и наличие
ServerAliasдля обоих вариантов домена. Командойopenssl s_client -connect example.ru:443 -servername example.ru </dev/nullможно проверить, какой сертификат выдаётся по SNI; замените имя. Исправляйте только тот виртуальный хост, к которому относится домен, с резервной копией конфигурации. - Проверьте путиПроверьте цепочку доверия: веб-сервер должен отдавать промежуточные сертификаты там, где они требуются. Для сертификатов от Let’s Encrypt в Apache обычно используют файл
fullchain.pem, а не толькоcert.pem, но конкретный путь зависит от способа установки. Откройте отчёт проверки TLS или используйтеopenssl s_client ... -showcertsи сравните цепочку. Не отключайте проверку сертификатов в браузере ради сокрытия ошибки. - Проверьте конфигурациюПосле изменения настройки запустите
sudo apachectl configtest; если увидитеSyntax OK, выполнитеsudo systemctl reload apache2на Debian/Ubuntu. При ошибке конфигурации не перезапускайте службу, верните прежний файл. Снова подключитесь через браузер и проверьте сертификат для каждого имени — сwwwи без него, если они используются. - Перезапустите ApacheНастройте контроль срока действия сертификата и автоматического продления через Certbot или панель хостинга. Для Certbot проверьте
sudo certbot renew --dry-run, когда это применимо к текущей конфигурации. Обновление сертификата не исправит неправильное сопоставление имён виртуальных хостов; если браузер по-прежнему показывает чужой сертификат, вернитесь кapachectl -Sи проверке SNI. - Команды для отдельных ситуацийВыберите только подходящий вариант. Это не одна последовательность: часть команд диагностирует проблему, а часть меняет настройки или данные.
Первый VirtualHost на порту 443 становится хостом по умолчанию: если для вашего домена нет отдельного блока, он получает чужой сертификат. Проверьте, что DNS указывает на нужный сервер, а не на старый. При использовании Cloudflare выберите режим SSL «Full (strict)» и убедитесь, что на origin-сервере действительный сертификат. Для SNI клиенты должны передавать имя: старые клиенты без SNI всегда получают сертификат первого хоста. Автоматическое продление проверьте командой sudo certbot renew --dry-run. Справка — .
Если вы используете wildcard-сертификат (*.example.ru), помните, что он не покрывает сам example.ru и поддомены второго уровня (a.b.example.ru), — добавьте основное имя в сертификат. Для проверки используйте внешний сервис : он покажет, какие имена включены в сертификат, и цепочку доверия.