Самоподписанный ssl, который я создал для localhost, нельзя доверять, даже если я уже импортировал его в chrome

Я создаю серверную часть https, которую использую для практики OAuth в Instagram, для которой требуется https.

Я сгенерировал сертификат с помощью ssl, запустив сценарий по следующей ссылке: https://gist.github.com/bjanderson/075fadfccdd12623ab935e57eff58eb4

Сценарий прошел нормально, и я получил все ожидаемые файлы. Я импортировал ca.crt в свой Chrome от доверенных корневых центров сертификации, но Chrome все еще не доверяет ему. Подходит ли место для импорта, поскольку в Chrome есть много разных разделов, в которые можно импортировать ca.crt.

Я получаю следующие ошибки:

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

Сертификат - отсутствует На этом сайте отсутствует действующий доверенный сертификат (net :: ERR_CERT_AUTHORITY_INVALID).

Как исправить эти две проблемы и заставить свой хром доверять моей самоподписанной сертификат?

1
задан 30 June 2019 в 13:27
1 ответ

Альтернативное имя субъекта , как говорится, альтернативное перечислены имена для темы. Это усовершенствование поля Тема , поскольку оно позволяет использовать несколько имен субъектов, тогда как Тема допускает только одно. Современные браузеры смотрят только на расширение Subject Alternative Name и игнорируют поле Subject .

Чтобы создать самозаверяющий сертификат, который должен работать в современных браузерах, создайте файл конфигурации OpenSSL аналогично следующему и сохраните его как openssl.cnf :

######################################################
# OpenSSL config to generate a self-signed certificate
#
# Create certificate with:
# openssl req -x509 -new -nodes -days 720 -keyout selfsigned.key -out selfsigned.pem -config openssl.cnf
#
# Remove the -nodes option if you want to secure your private key with a passphrase
#
######################################################

################ Req Section ################
# This is used by the `openssl req` command
# to create a certificate request and by the
# `openssl req -x509` command to create a
# self-signed certificate.

[ req ]

# The size of the keys in bits:
default_bits       = 2048

# The message digest for self-signing the certificate
# sha1 or sha256 for best compatability, although most
# OpenSSL digest algorithm can be used.
# md4,md5,mdc2,rmd160,sha1,sha256
default_md = sha256

# Don't prompt for the DN, use configured values instead
# This saves having to type in your DN each time.

prompt             = no
string_mask        = default
distinguished_name = req_dn

# Extensions added while singing with the `openssl req -x509` command
x509_extensions = x509_ext

[ req_dn ]

countryName            = GB
stateOrProvinceName    = Somewhere
organizationName       = Example
commonName             = Example Web Service

[ x509_ext ]

subjectKeyIdentifier    = hash
authorityKeyIdentifier  = keyid:always

# No basicConstraints extension is equal to CA:False
# basicConstraints      = critical, CA:False

keyUsage = critical, digitalSignature, keyEncipherment

extendedKeyUsage = serverAuth

subjectAltName = @alt_names

[alt_names]
DNS.1 = www.example.com
DNS.2 = www.example.org

Выполнить:

openssl req -x509 -new -nodes -days 720 -keyout selfsigned.key -out selfsigned.crt -config openssl.cnf

Добавьте selfsigned.crt в хранилище якорей доверия вашего браузера.

Если теперь исправить разрешение DNS (локальный DNS или файл / etc / hosts ) так, чтобы www.example.org или www.example.com указывали на 127.0.0.1 вы можете получить доступ к www.example.com или www.example.org без жалоб Chrome.

Чтобы проверить, запустите:

openssl s_serv -cert selfsigned.crt -key selfsigned.key -www -accept 8443

В браузере укажите https://www.example.org:8443 - вы должны получить список доступных наборов шифров и некоторую информацию о сеансе. Вы должны не получать предупреждение о сертификате.

0
ответ дан 4 December 2019 в 02:52

Теги

Похожие вопросы