Недавно Chrome перестал работать с моими самоподписанными сертификатами SSL и считает их небезопасными. Когда я смотрю на сертификат на DevTools | Security
вкладке, я вижу, что он говорит
Отсутствует альтернативное имя субъекта Сертификат для этого сайта не содержит расширения альтернативного имени субъекта, содержащего доменное имя или IP-адрес.
Ошибка сертификата Возникли проблемы с цепочкой сертификатов сайта (net :: ERR_CERT_COMMON_NAME_INVALID).
Как я могу это исправить?
google-chrome
ssl
https
pkix
Брэд Паркс
источник
источник
CN=www.example.com
наверное не так. Имена хостов всегда попадают в SAN . Если он присутствует в CN , то он также должен присутствовать в SAN (в этом случае вы должны указать его дважды). Дополнительные правила и причины см. В разделах «Как подписать запрос на подпись сертификата в центре сертификации» и « Как создать самоподписанный сертификат с помощью openssl?». Вам также необходимо будет поместить самозаверяющий сертификат в соответствующее хранилище доверенных сертификатов.Ответы:
Чтобы исправить это, вам нужно указать дополнительный параметр
openssl
при создании сертификата, в основном-sha256 -extfile v3.ext
где
v3.ext
находится такой файл,%%DOMAIN%%
замененный тем же именем, что и у вашегоCommon Name
. Больше информации здесь и здесь . Обратите внимание, что обычно вы устанавливаетеCommon Name
и%%DOMAIN%%
для домена, для которого пытаетесь создать сертификат. Так что если бы это было такwww.mysupersite.com
, вы бы использовали это для обоих.v3.ext
Примечание. Сценарии, которые решают эту проблему и создают полностью доверенные сертификаты ssl для использования в Chrome, Safari и клиентах Java, можно найти здесь.
Еще одно примечание : если все, что вы пытаетесь сделать, это остановить появление ошибок хрома при просмотре самоподписанного сертификата, вы можете указать Chrome игнорировать все ошибки SSL для ВСЕХ сайтов, запустив его со специальной опцией командной строки, как подробно описано здесь. на SuperUser
источник
bin\openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 365 -sha256 -extfile v3.ext
. Конечно, вам все равно нужно сохранитьv3.ext
файл в той же папке.unknown option -extfile
. Как это исправить?extfile
директиву не в той команде openssl? Вместо того, чтобы использоваться вopenssl req -new ...
, он используется вopenssl x509 -req ...
. По крайней мере, это то, что здесь кто-то сказал , что кажется правдой из примераСледующее решение сработало для меня на chrome 65 ( ref ) -
Создайте файл конфигурации OpenSSL (пример: req.cnf)
Создайте сертификат, ссылающийся на этот файл конфигурации
источник
basicConstraints = CA:true
пропали?Bash скрипт
Я создал сценарий bash, чтобы упростить создание самозаверяющих сертификатов TLS, действующих в Chrome.
Протестировано
Chrome 65.x
и все еще работает. Обязательно перезапустите Chrome после установки новых сертификатов.Другие источники
Еще один (гораздо более надежный) инструмент, на который стоит обратить внимание - это
cfssl
набор инструментов CloudFlare :источник
Я просто использую
-subj
параметр, добавляющий IP-адрес машины. Так решается одной командой.Вы можете добавить другие атрибуты, такие как C, ST, L, O, OU, emailAddress, для создания сертификатов без запроса.
источник
openssl.exe req -x509 -sha256 -newkey rsa:2048 -keyout certificate.key -out certificate.crt -days 365 -nodes -subj "/CN=my.domain.com" -addext "subjectAltName=DNS:my.domain.com"
IIS затем нужен*.pfx
формат:openssl.exe pkcs12 -export -out certificate.pfx -inkey certificate.key -in certificate.crt
У меня было так много проблем с получением самозаверяющих сертификатов, работающих в macos / Chrome. Наконец я нашел Mkcert, «простой инструмент с нулевой конфигурацией, позволяющий создавать локально доверенные сертификаты разработки с любыми именами». https://github.com/FiloSottile/mkcert
источник
Сделайте копию своей конфигурации OpenSSL в своем домашнем каталоге:
или в Linux:
Добавить альтернативное имя субъекта в
openssl-temp.cnf
под[v3_ca]
:Замените
localhost
доменом, для которого вы хотите создать этот сертификат.Создать сертификат:
Затем вы можете удалить
openssl-temp.cnf
источник
Мне удалось избавиться от (net :: ERR_CERT_AUTHORITY_INVALID), изменив значение DNS.1 файла v3.ext
[alt_names] DNS.1 = domainname.com
Измените domainname.com на свой собственный домен.
источник
Вот очень простой способ создать сертификат IP, которому будет доверять Chrome.
Файл ssl.conf ...
Где, конечно же, 192.168.1.10 - это IP-адрес локальной сети, которому Chrome должен доверять.
Создайте сертификат:
В Windows импортируйте сертификат в хранилище доверенных корневых сертификатов на всех клиентских машинах. На телефоне или планшете Android загрузите сертификат, чтобы установить его. Теперь Chrome будет доверять сертификату в Windows и Android.
На Windows dev box лучше всего получить openssl.exe из "c: \ Program Files \ Git \ usr \ bin \ openssl.exe"
источник
на MAC, начиная с версии 67.0.3396.99 Chrome, мой самозаверяющий сертификат перестал работать.
регенерация со всем написанным здесь не сработала.
ОБНОВИТЬ
удалось подтвердить, что мой подход работает сегодня :). Если это не сработает, убедитесь, что вы используете этот подход.
скопировано отсюда https://ksearch.wordpress.com/2017/08/22/generate-and-import-a-self-signed-ssl-certificate-on-mac-osx-sierra/
КОНЕЦ ОБНОВЛЕНИЯ
наконец, смог увидеть зеленый Secure, только когда удалил мой сертификат из системы и добавил его в локальную связку ключей. (если есть - сначала бросьте). Не уверен, что это имеет значение, но в моем случае я загрузил сертификат через Chrome и подтвердил, что дата создания - сегодня - так что это тот, который я только что создал.
надеюсь, что это будет полезно для кого-то потратить на это как день.
никогда не обновляйте хром!
источник
Если вы хотите запустить свой сервер localhost, вам необходимо настроить
CN = localhost
иDNS.1 = localhost
.источник