Error code: SSL_ERROR_BAD_CERT_DOMAIN в Firefox
Рассмотрим, как исправить ошибку «SSL_ERROR_BAD_CERT_DOMAIN», которая возникает для самоподписанного сертификата.
Полный текст ошибки:
Warning: Potential Security Risk Ahead Firefox detected a potential security threat and did not continue to hackware.local. If you visit this site, attackers could try to steal information like your passwords, emails, or credit card details. What can you do about it? The issue is most likely with the website, and there is nothing you can do to resolve it. You can notify the website’s administrator about the problem. Learn more… Websites prove their identity via certificates. Firefox does not trust this site because it uses a certificate that is not valid for hackware.local. Error code: SSL_ERROR_BAD_CERT_DOMAIN
Данная ошибка может возникнуть как при обращении к сайту в Интернете, так и для локального сайта для которого вы создали SSL сертификат, например, для тестирования HTTPS настроек.
В Интернете самой частой причиной данной ошибки является не совпадение имени домена, для которого выдан сертификат с тем именем которое вы используете для подключения к веб-серверу. Чтобы было понятнее, например, вы обращаетесь к веб-сайту указав в строке браузера IP адрес вместо доменного имени. Или доменное имя не совпадает с сертификатом — такое тоже может быть по разным причинам, например, я сталкивался с такими примерами на виртуальных хостингах, когда используется сертификат хостера для тех сайтов, которые не настроили HTTPS, но к которым обращаются по HTTPS протоколу.
Проще говоря, ошибка «SSL_ERROR_BAD_CERT_DOMAIN» это, скорее всего, не ваша головная боль (если, конечно, вы не являетесь владельцем проблемного сайта).
Как исправить «SSL_ERROR_BAD_CERT_DOMAIN» для самоподписанного сертификата
Эта заметка посвящена ошибке «SSL_ERROR_BAD_CERT_DOMAIN» возникающей на локальном компьютере или сервере, для которого вы сгенерировали самоподписанный SSL сертификат.
Примечание: чтобы самоподписанный сертификат воспринимался веб-браузерами как подписанный надёжным источником, сертификат локального Центра Сертификации (CA) уже должен быть добавлен в доверенные. Подробности смотрите в разделе Как добавить корневой сертификат в доверенные в Linux в веб браузеры. Тем не менее, если вы столкнулись с ошибкой «SSL_ERROR_BAD_CERT_DOMAIN», скорее всего, сертификат локального Центра Сертификации (CA) уже добавлен в доверенные, иначе ошибка бы была иной.
Итак, вы создали сертификат указав доменное имя (имя хоста) правильно, но всё равно возникает ошибка «SSL_ERROR_BAD_CERT_DOMAIN».
Если вчитаться в сообщение, то в нём сказано что-то про плохой домен в сертификате.
То есть можно подумать, что имя домена (имя хоста) указано с ошибкой.
Если вы кликните на сообщении «View Certificate», то будут показаны дополнительные сведения, среди них поле «Common Name»:
Common Name hackware.local
Вы можете сравнить значение Common Name с введённым доменным именем в адресной строке сайта.
Веб-браузеры используют имя хоста из Subject Alternative Name (subjectAltName)
Но как бы вы не перепроверяли Common Name (CN) и, может быть, даже пересоздали сертификат без опечаток в Common Name, вам ничего из этого не поможет. Дело в том, что сообщение ошибки показывает неверную причину. Теперь веб-браузеры сравнивают имя домена в адресной строке и имя домена для которого действителен сертификат беря его из поля Subject Alternative Name.
То есть, даже если создать сертификат с правильным Common Name (CN), то он всё равно будет вызывать ошибку «SSL_ERROR_BAD_CERT_DOMAIN».
Чтобы исправить ошибку «SSL_ERROR_BAD_CERT_DOMAIN» создайте сертификат с расширением Subject Alternative Name. Это довольно просто.
Расширение Subject Alternative Name добавляется НЕ во время создания запроса подписи сертификата, а во время подписи сертификата. То есть генерация приватного ключа и запроса на подпись сертификата выполняются обычным способом.
Перед созданием самоподписанного сертификата, нужно создать файл с настройками Subject Alternative Name (subjectAltName). Я в качестве имени файла выбрал extraoptions.ext, но вы можете выбрать любое другое.
Пример синтаксиса файла (для домена hackware.local):
subjectAltName = DNS:hackware.local
После DNS нужно указать имя хоста. Вы также можете указать имя хоста с подстановочными знаками. Если значений несколько, то они разделяются запятыми:
subjectAltName = DNS:*.hackware.local, DNS:hackware.local
Затем, на этапе подписания сертификата вам нужно указать опцию -extfile и затем имя файла, куда вы сохранили настройки:
openssl x509 -req -in DOMAIN.NAME.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out DOMAIN.NAME.crt -days 500 -sha256 -extfile extraoptions.ext
Также смотрите подробности в статье: Как добавить Subject Alternative Name (subjectAltName) в самоподписанный сертификат
Теперь после создания самоподписанного сертификата переместите его в директорию SSL сертификатов веб-сервера и перезапустите веб-сервер, чтобы изменения вступили в силу. В веб-браузере для перезагрузки страницы рекомендуется использовать сочетание Ctrl+F5 для принудительной загрузки новой версии страницы, без использования кэша веб-браузера.
Вот и всё — проблема решена! Теперь соединение отмечено как безопасное.
Связанные статьи:
- Ошибка «net::ERR_CERT_COMMON_NAME_INVALID» для самоподписанного сертификата (РЕШЕНО) (100%)
- Ошибка «Error code: SSL_ERROR_RX_RECORD_TOO_LONG» (РЕШЕНО) (100%)
- Ошибка «ERR_SSL_PROTOCOL_ERROR» (РЕШЕНО) (100%)
- Как добавить Subject Alternative Name (subjectAltName) в самоподписанный сертификат (96.7%)
- Ошибка «net::ERR_CERT_AUTHORITY_INVALID» для самоподписанного сертификата (РЕШЕНО) (68%)
- Как исправить ошибку ‘No Space Left on Device’ (на устройстве не осталось места) на Linux, когда свободное место на самом деле есть (RANDOM - 0.8%)