Недопустимый самозаверяющий сертификат 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.
после установки сертификатов обязательно перезапустите chrome (chrome://restart
). Протестировано на Chrome 65.x
и он все еще работает.
еще один (гораздо более надежный) инструмент, который стоит проверить, - CloudFlare 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!