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



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




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



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




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

1212   6  

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.

самозаверяющий-TLS bash script

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


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

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

    Ничего не найдено.