Я следовал этому руководству по созданию подписанных SSL-сертификатов в Windows для целей разработки, и он отлично работал для одного из моих доменов (я использую файл hosts для имитации DNS). Затем я понял, что у меня много поддоменов, и было бы головной болью создать сертификат для каждого из них. Поэтому я попытался создать сертификат с использованием подстановочного знака в Common
поле, как это было предложено в некоторых ответах на serverfault. Как это:
Common Name: *.myserver.net/CN=myserver.net
Однако после импорта этого сертификата в Trusted Root Certification Authority я получаю NET::ERR_CERT_COMMON_NAME_INVALID
ошибку в Chrome для основного домена и всех его дочерних узлов, например: https://sub1.myserver.net
и https://myserver.net
.
Этот сервер не смог доказать, что это myserver.net; его сертификат безопасности находится в * .myserver.net / CN = myserver.net.
Это может быть вызвано неправильной конфигурацией или злоумышленником, перехватывающим ваше соединение.
Что-то не так в поле Common Name, которое вызывает эту ошибку?
Ответы:
Как заявил Рахул, это обычная ошибка Chrome и OSX. У меня были подобные проблемы в прошлом. Фактически, я наконец устал делать 2 [да, я знаю, что это не так много] дополнительных кликов при тестировании локального сайта для работы.
Что касается возможного решения этой проблемы [с использованием Windows], я бы использовал одну из многих доступных утилит самоподписывания сертификатов .
Рекомендуемые шаги:
ПРИМЕЧАНИЕ. Шаг 3 решит проблему, возникшую после того, как Google исправит ошибку ... учитывая, что время истекло, в обозримом будущем нет ETA. **
Насколько я предпочитаю использовать Chrome для разработки, я недавно оказался в Firefox Developer Edition . у которого нет этой проблемы.
Надеюсь это поможет :)
источник
Chrome 58 отказался от поддержки сертификатов без альтернативных имен субъектов .
В дальнейшем это может быть еще одной причиной возникновения этой ошибки.
источник
Обходной путь - добавить доменные имена, которые вы используете как «subjectAltName» (альтернативное имя субъекта X509v3). Это можно сделать, изменив конфигурацию OpenSSL (
/etc/ssl/openssl.cnf
в Linux) и изменивv3_req
раздел, чтобы он выглядел следующим образом:После этого не забудьте использовать
-extensions v3_req
переключатель при создании нового сертификата. (см. также Как я могу сгенерировать самозаверяющий сертификат с SubjectAltName с помощью OpenSSL? )источник
subjectAltName = @alt_names
полностью решило мою проблему. Я ранее привязал DNS-идентификатор к своему домену, указав егоCN=*.example.com
. НастройкаDNS.1 = example.com
иDNS.2 = *.example.com
сделала свое дело. Странным (для меня) было то, что все это работало до ~ 17 марта 2017 г. и остановилось на следующий день (была запущена большая партия обновлений Windows). Но в Linux у меня ничего не сломалось, это был только Chrome , Firefox на Windows .subjectAltName
выпуска Chrome 58, который в настоящее время находится в стадии бета-тестирования. Это сильно укусило меня, потому что я не только ничего об этом не видел, но и имя ошибки вводит в заблуждение (это не обычное имя, которое недействительно!). Я был противоположностью вам; для меня это произошло только в Linux, поэтому я часами пытался исправить там свое локальное хранилище сертификатов.58.0.3029.19 beta (64-bit)
это так. Я восстановил дерево сертификатов с правильнымиsubjectAltName
-s, и теперь все работает. И я согласен, сообщение об ошибке очень вводит в заблуждение, поскольку это неCommonName
что является недопустимым. Если появитсяsubjectAltName
сообщение «Сертификат отсутствует надлежащий » , все будут намного счастливее.Создать
openssl.conf
файл:Запустите эту команду:
Выходные файлы
app.crt
иapp.key
работа у меня.источник
DNS.1 = *.myserver.net
. Должно бытьDNS.2 = *.myserver.net
. У меня отлично работает.Ваш подстановочные
*.example.com
вовсе не покрывает корневой домен ,example.com
но будет охватывать любой вариант на суб -области , таких какwww.example.com
илиtest.example.com
Предпочтительный метод - установить альтернативные имена субъектов, как в ответе Фабиана, но имейте в виду, что в настоящее время Chrome требует, чтобы общее имя было указано дополнительно как одно из альтернативных имен субъектов (как это правильно показано в его ответе). Я недавно обнаружил эту проблему, потому что у меня было общее имя
example.com
с SANwww.example.com
иtest.example.com
, но я получилNET::ERR_CERT_COMMON_NAME_INVALID
предупреждение от Chrome. Мне пришлось сгенерировать новый запрос на подпись сертификатаexample.com
как с общим именем, так и с одним из SAN. Тогда Chrome полностью доверял сертификату. И не забудьте импортировать корневой сертификат в Chrome в качестве доверенного органа для идентификации веб-сайтов.источник
DNS.1 = example.com
иDNS.2 = *.example.com
при[alt_names]
вopenssl.cnf
.Думаю, это может быть баг в хроме. Давным-давно была похожая проблема: посмотрите это.
Попробуйте в другом браузере. Думаю, должно работать нормально.
источник
Для всех, кто сталкивается с этим и хочет рискнуть и протестировать его, есть решение: перейдите в режим инкогнито в Chrome, и вы сможете открыть «Дополнительно» и нажать «Перейти к some.url».
Это может быть полезно, если вам нужно проверить какой-то веб-сайт, который вы обслуживаете самостоятельно и просто тестируете как разработчик (и когда у вас еще нет настроенного сертификата разработки).
Конечно, это НЕ ДЛЯ ЛЮДЕЙ, использующих веб-сайт в производстве, где эта ошибка указывает на наличие проблемы с безопасностью веб-сайта.
источник
Если вы устали от этой ошибки. Вы можете заставить Chrome не вести себя подобным образом. Я не говорю, что это лучший способ, просто говорю, что это способ.
Нашел эту информацию на странице поддержки Symantec: https://support.symantec.com/en_US/article.TECH240507.html
источник
Предоставленные ответы не помогли мне (Chrome или Firefox) при создании PWA для локальной разработки и тестирования. НЕ ИСПОЛЬЗУЙТЕ ДЛЯ ПРОИЗВОДСТВА! Мне удалось использовать следующее:
<your ip here, e.g. 192.168.1.12>
const https = require('https'); const fs = require('fs');
в начало файла server.jsreturn app.listen(PORT, () => { ... });
внизу файла server.jshttps.createServer({ key: fs.readFileSync('./cert.key','utf8'), cert: fs.readFileSync('./cert.crt','utf8'), requestCert: false, rejectUnauthorized: false }, app).listen(PORT)
У меня больше нет ошибок в Chrome или Firefox
источник