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

недавно Chrome перестал работать с моими САМОЗАВЕРЯЮЩИМИ сертификатами SSL и думает, что они небезопасны. Когда я смотрю на сертификат DevTools | Security tab, я вижу, что он говорит

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

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

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

6 ответов


чтобы исправить это, вам нужно предоставить дополнительный параметр openssl когда вы создаете сертификат, в основном

-sha256 -extfile v3.ext

здесь v3.ext - это файл, как так, с %%DOMAIN%% заменено тем же именем, которое вы используете в качестве Common Name. Подробнее здесь и здесь. Обратите внимание, что обычно вы устанавливаете Common Name и %%DOMAIN%% к домену, для которого вы пытаетесь создать сертификат. Так что если бы это было www.mysupersite.com, тогда вы бы использовали это для оба.

В3.доб

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


Я создал 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/

ОБНОВЛЕНИЯ

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

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

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