Недопустимый самоподписанный 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 / TLS, предлагаемый конкретным сайтом?
  • Могут ли клиенты telnet или netcat связываться через SSL?
  • Сертификату SSL не доверяют - только на мобильных телефонах
  • Использование CERT Tapioca на VM
  • Что такое Keystore?
  • Знак предупреждения Thunderbird продолжает появляться
  • Каков правильный способ безопасного отключения сокета SSL asio?
  • java.security.cert.CertificateException: сертификаты не соответствуют ограничениям алгоритма
  • Java: sun.security.provider.certpath.SunCertPathBuilderException: невозможно найти допустимый путь сертификации для запрошенной цели
  • GMail и SSL Encryption - сколько зашифровано
  • Interesting Posts

    В чем разница между == и .equals в Scala?

    Форматирование CSV с разделителями-запятыми, чтобы заставить Excel интерпретировать значение как строку

    Поддерживает ли Mac OS X журнал сетевых адресов и дат / времени?

    Установить принтер через профили в Windows XP?

    C аргументы по умолчанию

    Как избежать двойных кавычек в JSON

    Загрузка на несколько CDN-серверов одновременно через FTP или SSH

    Будет ли Windows 10 Free Upgrade оставаться на профессиональном канале?

    Регулярное выражение для asp: RegularExpressionValidator с форматом MMddyy (выпуск високосного года)

    Используя API TFS, как я могу найти комментарии, которые были сделаны в обзоре кода?

    Настройка виртуального ПК (виртуального окна) в качестве веб-сервера

    Как настроить Ruby on Rails без базы данных?

    Выбор MySQL с условием CONCAT

    Как вырваться из вложенных циклов?

    Как я могу получить список обратных вызовов в рабочей очереди узла? (или, почему Node не выйдет?)

    Давайте будем гением компьютера.