it-swarm.com.ru

Неверный самозаверяющий сертификат SSL - "Отсутствует альтернативное имя субъекта"

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

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

Ошибка сертификата. Существуют проблемы с цепочкой сертификатов сайта (Нетто :: ERR_CERT_COMMON_NAME_INVALID).

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

68
Brad Parks

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

78
Brad Parks

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

самоподписанный скрипт bash

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


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

cfssl

14
Logan

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

Я просто использую параметр -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, чтобы генерировать сертификаты без запроса.

4
Ludwig

на 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/

END UPDATE

наконец-то смог увидеть зеленый Secure только когда удалил мой сертификат из system и добавил его в local связку ключей. (если есть - бросьте первым). Не уверен, имеет ли это значение, но в моем случае я скачал сертификат через Chrome и проверил, что дата создания сегодня - поэтому я только что создал.

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

никогда не обновляйте chrome!

0
user2932688

Мне удалось избавиться от (net :: ERR_CERT_AUTHORITY_INVALID), изменив значение DNS.1 файла v3.ext 

[alt_names] DNS.1 = domainname.com

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

0
Jun See