Apache Linux NET::ERR_CERT_COMMON_NAME_INVALID

Apache: сертификат SSL не соответствует имени сайта

  • Обновлено
  • Чтение ≈ 4 минуты
  • Нужны права администратора

Краткий ответ

Ошибка ERR_CERT_COMMON_NAME_INVALID возникает, когда сертификат не соответствует имени сайта. Выпустите сертификат на нужные домены (включая www), настройте VirtualHost на порту 443 с ServerName и перезапустите Apache.

В этой статье
  1. Что означает ошибка
  2. Причины и решения
  3. Пошаговое решение

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

NET::ERR_CERT_COMMON_NAME_INVALID
Сертификат выдан для другого домена NET::ERR_CERT_COMMON_NAME_INVALID

Браузер проверяет, что имя в адресной строке указано в сертификате (в полях CN или SAN). Если сертификат выдан на другое имя, не включает www или запрос попал в виртуальный хост по умолчанию с чужим сертификатом, возникает ошибка NET::ERR_CERT_COMMON_NAME_INVALID. Обращение по IP-адресу тоже вызывает эту ошибку, так как сертификаты выдаются на доменные имена.

#Причины и решения

Возможная причинаКак узнатьЧто делать
Сертификат выпущен на другое имяСертификат на другой домен.В сертификате иные имена.Перевыпустите.
Запрос попал в виртуальный хост по умолчаниюНет VirtualHost для домена.Видны чужие данные.Добавьте VirtualHost.
Нет сертификата для wwwСертификат без www.www даёт ошибку, без www работает.Добавьте имя.
Обращение по IPСайт открыт по IP.Адрес — цифры.Используйте домен.

#Пошаговое решение

  1. Проверьте сертификатОткройте сайт в браузере по полному адресу с https:// и проверьте, на каком именно имени появляется ошибка: example.ru, www.example.ru или другом поддомене. Нажмите значок сведений о подключении и откройте сведения о сертификате без обхода предупреждения. Сравните запрошенный адрес со списком Subject Alternative Name (SAN); отсутствие точного имени означает, что сертификат не подходит.
  2. Проверьте через opensslАдминистратор Apache: подключитесь к серверу по SSH и выполните sudo apachectl -S, чтобы увидеть виртуальные хосты для 443 и их ServerName/ServerAlias. Сравните с DNS-записями проблемного домена. При нескольких сайтах на одном IP важно, какой виртуальный хост выбран по SNI: неверный default может отдавать чужой сертификат. Не меняйте ServerName наугад без проверки всех сайтов на адресе.
  3. Проверьте VirtualHostПосмотрите в конфигурации конкретного <VirtualHost *:443> пути SSLCertificateFile и SSLCertificateKeyFile. Проверьте, что выбран файл полного сертификата для нужного домена и он не перепутан с сертификатом соседнего сайта. Для просмотра имён в PEM используйте openssl x509 -in /путь/к/fullchain.pem -noout -ext subjectAltName; путь берите из своего конфига. Приватный ключ не выводите и не передавайте в поддержку.
  4. Задайте ServerName и ServerAliasЕсли сертификат не содержит нужного имени, перед выпуском проверьте, что A/AAAA-записи домена направлены на этот сервер и доступен способ проверки владения доменом. Затем используйте Certbot только если он установлен и подходит для вашей схемы Apache: например, sudo certbot --apache -d example.ru -d www.example.ru после замены примеров на свои имена и успешной предварительной проверки. На панели хостинга выбирайте выпуск сертификата через панель вместо ручного изменения конфигов.
  5. Перевыпустите сертификатЕсли сертификат верный, но сервер отдаёт другой, проверьте порядок выбора виртуального хоста на 443 и наличие ServerAlias для обоих вариантов домена. Командой openssl s_client -connect example.ru:443 -servername example.ru </dev/null можно проверить, какой сертификат выдаётся по SNI; замените имя. Исправляйте только тот виртуальный хост, к которому относится домен, с резервной копией конфигурации.
  6. Проверьте путиПроверьте цепочку доверия: веб-сервер должен отдавать промежуточные сертификаты там, где они требуются. Для сертификатов от Let’s Encrypt в Apache обычно используют файл fullchain.pem, а не только cert.pem, но конкретный путь зависит от способа установки. Откройте отчёт проверки TLS или используйте openssl s_client ... -showcerts и сравните цепочку. Не отключайте проверку сертификатов в браузере ради сокрытия ошибки.
  7. Проверьте конфигурациюПосле изменения настройки запустите sudo apachectl configtest; если увидите Syntax OK, выполните sudo systemctl reload apache2 на Debian/Ubuntu. При ошибке конфигурации не перезапускайте службу, верните прежний файл. Снова подключитесь через браузер и проверьте сертификат для каждого имени — с www и без него, если они используются.
  8. Перезапустите ApacheНастройте контроль срока действия сертификата и автоматического продления через Certbot или панель хостинга. Для Certbot проверьте sudo certbot renew --dry-run, когда это применимо к текущей конфигурации. Обновление сертификата не исправит неправильное сопоставление имён виртуальных хостов; если браузер по-прежнему показывает чужой сертификат, вернитесь к apachectl -S и проверке SNI.
  9. Команды для отдельных ситуацийВыберите только подходящий вариант. Это не одна последовательность: часть команд диагностирует проблему, а часть меняет настройки или данные.
    Выберите подходящий вариант — это не команды для последовательного выполнения
    Вариант 1Проверка конфигурации, выпуск сертификата и перезагрузка Apache.
    Linux · Терминал (Bash)С осторожностьюНужен sudo
    Проверка конфигурации, выпуск сертификата и перезагрузка Apache.
    sudo apachectl -S
    sudo certbot --apache -d example.ru -d www.example.ru
    sudo apachectl configtest
    sudo systemctl reload apache2

    Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

    Вариант 2Пример файла или настройки
    Текст
    <VirtualHost *:443>
        ServerName example.ru
        ServerAlias www.example.ru
        DocumentRoot /var/www/example.ru
        SSLEngine on
        SSLCertificateFile /etc/letsencrypt/live/example.ru/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/example.ru/privkey.pem
    </VirtualHost>

Первый VirtualHost на порту 443 становится хостом по умолчанию: если для вашего домена нет отдельного блока, он получает чужой сертификат. Проверьте, что DNS указывает на нужный сервер, а не на старый. При использовании Cloudflare выберите режим SSL «Full (strict)» и убедитесь, что на origin-сервере действительный сертификат. Для SNI клиенты должны передавать имя: старые клиенты без SNI всегда получают сертификат первого хоста. Автоматическое продление проверьте командой sudo certbot renew --dry-run. Справка — Apache: SSL.

Если вы используете wildcard-сертификат (*.example.ru), помните, что он не покрывает сам example.ru и поддомены второго уровня (a.b.example.ru), — добавьте основное имя в сертификат. Для проверки используйте внешний сервис SSL Labs: он покажет, какие имена включены в сертификат, и цепочку доверия.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.