Недопустимый самозаверяющий сертификат SSL - " отсутствует альтернативное имя субъекта"
недавно Chrome перестал работать с моими самоподписанными сертификатами SSL и считает, что они небезопасны. Когда я смотрю на сертификат DevTools | Security tab, я вижу, что он говорит
альтернативное имя субъекта отсутствует сертификат для этого сайта
не содержит расширение альтернативного имени субъекта, содержащее домен
имя или IP-адрес.
ошибка сертификата есть проблемы с цепочкой сертификатов сайта
(net:: ERR_CERT_COMMON_NAME_INVALID).
Как я могу это исправить?
6 ответов:
чтобы исправить это, вам нужно предоставить дополнительный параметр
opensslкогда вы создаете сертификат, в основном
-sha256 -extfile v3.extздесь
v3.extЭто такой файл, с%%DOMAIN%%заменено на то же имя, которое вы используете в качествеCommon Name. Подробнее здесь и здесь. Обратите внимание, что обычно вы устанавливаетеCommon Nameи%%DOMAIN%%к домену, для которого вы пытаетесь создать сертификат. Так что если бы это былоwww.mysupersite.com, тогда вы бы использовали это для оба.v3.ext
authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment subjectAltName = @alt_names [alt_names] DNS.1 = %%DOMAIN%%Примечание: сценарии, которые решают эту проблему, и создать полностью доверенные SSL сертификаты для использования в Chrome, Safari и от клиентов Java можно найти здесь
еще одна нота: если все, что вы пытаетесь сделать, это остановить chrome от ошибок при просмотре самозаверяющего сертификата, вы можете сказать Chrome игнорировать все ошибки SSL для всех сайтов, запустив его со специальной командной строкой вариант как подробно здесь на суперпользователя
Я создал bash script чтобы упростить создание самозаверяющих сертификатов TLS, которые действительны в Chrome.
после установки сертификатов обязательно перезапустите chrome (
chrome://restart). Проверено наChrome 65.xи он все еще работает.
еще один (гораздо более надежный) инструмент, который стоит проверить, - это CloudFlare
cfsslнабор инструментов:
следующее решение работало для меня на chrome 65 ( ref) -
создайте конфигурационный файл OpenSSL (пример: req.cnf)
[req] distinguished_name = req_distinguished_name x509_extensions = v3_req prompt = no [req_distinguished_name] C = US ST = VA L = SomeCity O = MyCompany OU = MyDivision CN = www.company.com [v3_req] keyUsage = critical, digitalSignature, keyAgreement extendedKeyUsage = serverAuth subjectAltName = @alt_names [alt_names] DNS.1 = www.company.com DNS.2 = company.com DNS.3 = company.netсоздайте сертификат, ссылающийся на этот конфигурационный файл
openssl req -x509 -nodes -days 730 -newkey rsa:2048 \ -keyout cert.key -out cert.pem -config req.cnf -sha256
Я просто использовать
-subjпараметр добавление ip-адреса машины. Так что решается только с одной командой.sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -sha256 -subj '/CN=my-domain.com/subjectAltName=DNS.1=192.168.0.222/' -keyout my-domain.key -out my-domain.crtвы можете добавить другие атрибуты, такие как C, ST, L, O, OU, emailAddress для создания сертификатов без запроса.
Я смог избавиться от (net::ERR_CERT_AUTHORITY_INVALID), изменив DNS.1 значение v3.ext file
[alt_names] служба DNS.1 = domainname.com
изменить domainname.com с вашим собственным доменом.
on MAC начиная с версии chrome 67.0.3396.99 мой самозаверяющий сертификат перестал работать.
регенерация со всем, что здесь написано, не сработала.
обновление
был шанс подтвердить, что мой подход работает сегодня :). Если это не работает для вас убедитесь, что вы используете этот подход
v3.ext authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment subjectAltName = @alt_names [alt_names] DNS.1 = <specify-the-same-common-name-that-you-used-while-generating-csr-in-the-last-step> $скопировать из здесь https://ksearch.wordpress.com/2017/08/22/generate-and-import-a-self-signed-ssl-certificate-on-mac-osx-sierra/
ОБНОВЛЕНИЯ
наконец-то смог увидеть зеленый Безопасный только тогда, когда удалены мой сертификат от система и добавил на local брелок. (если есть один-бросьте его первым). не уверен, что это имеет значение, но в моем случае я загрузил сертификат через chrome и проверил эта дата создания сегодня-так что это тот, который я только что создал.
надеюсь, это будет полезно для кого-то потратить день на это.
никогда не обновляйте chrome!
Comments