Недопустимый самоподписанный SSL-сертификат – «Тема альтернативного имени отсутствует»

Недавно Chrome перестала работать с моими собственными сертификатами SSL и думает, что они небезопасны. Когда я смотрю на сертификат в DevTools | Security Вкладка « DevTools | Security », я вижу, что она говорит

Тема Альтернативное имя отсутствует. Сертификат для этого сайта не содержит расширение альтернативного имени объекта, содержащего имя домена или IP-адрес.

Ошибка сертификата Есть проблемы с цепочкой сертификатов сайта (net :: ERR_CERT_COMMON_NAME_INVALID).

Как я могу это исправить?

Чтобы исправить это, вам нужно предоставить дополнительный параметр 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 игнорирует все ошибки SSL для ВСЕХ сайтов, запустив его с помощью специальной опции командной строки, как описано здесь на SuperUser

Я создал сценарий bash, чтобы упростить создание самозаверяющих сертификатов TLS, действующих в Chrome.

скрипт self-signed-tls bash

После установки сертификатов обязательно перезапустите хром ( chrome://restart ). Протестировано на Chrome 65.x и оно все еще работает.


Другой (гораздо более надежный) инструмент, заслуживающий проверки, – это cfssl toolkit CloudFlare:

cfssl

Следующее решение работало для меня на хроме 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

[alt_names] DNS.1 = domainname.com

Измените domainname.com на свой собственный домен.

на 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 =  $ 

Скопировано здесь https://ksearch.wordpress.com/2017/08/22/generate-and-import-a-self-signed-ssl-certificate-on-mac-osx-sierra/

END UPDATE

наконец, смог увидеть зеленый Secure только тогда, когда удалил мой сертификат из системы и добавил его в местный брелок. (если есть одно – отбросить его первым). Не уверен, что он сошёл, но в моем случае я загрузил сертификат через chrome и проверил, что создать дату сегодня – так это тот, который я только что создал.

надеюсь, что это будет полезно, если кто-то потратит на это день.

никогда не обновляйте хром!

  • Какой простой способ полностью игнорировать ssl с java-url-соединениями?
  • Проблемы с подключением через HTTPS / SSL через собственный клиент Java
  • Как добавить сертификат SSL в AWS EC2 с помощью новой службы AWS Certificate Manager
  • Java SSLHandshakeException «нет общих наборов шифров»
  • По умолчанию SecurityProtocol в .NET 4.5
  • Как загрузить файл PKCS # 12 в OpenSSL программно?
  • Сертификату SSL не доверяют - только на мобильных телефонах
  • HTTPS с NSURLConnection - NSURLErrorServerCertificateUntrusted
  • Что происходит на проводе при настройке соединения TLS / LDAP или TLS / HTTP?
  • Как я могу различать эти две ситуации сертификата?
  • Почему OS X не доверяет SSL-сертификату GitHub?
  • Давайте будем гением компьютера.