Недопустимый самоподписанный 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 и проверил, что создать дату сегодня – так это тот, который я только что создал.

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

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

  • C # Игнорировать ошибки сертификата?
  • Решение javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed Ошибка?
  • Включить TLS 1.1 и 1.2 для клиентов на Java 7
  • Trust Store vs Key Store - создание с помощью keytool
  • Использование настраиваемого хранилища доверия в Java, а также значение по умолчанию
  • Как реализовать идентификацию имени сервера (SNI)
  • Доверяйте всем сертификатам okHttp
  • javax.net.ssl.SSLException: Ошибка чтения: ssl = 0x9524b800: ошибка ввода-вывода во время системного вызова, сброс соединения с помощью одноранговой сети
  • Регистрация нескольких хранилищ ключей в JVM
  • Какой простой способ полностью игнорировать ssl с java-url-соединениями?
  • как я могу поделиться сеансом asp.net между http и https
  • Давайте будем гением компьютера.