Назад | Перейти на главную страницу

Самоподписанный 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).

Как исправить эти две проблемы и заставить Chrome доверять моему самозаверяющему сертификату?

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

Чтобы создать самозаверяющий сертификат, который должен работать в современных браузерах, создайте файл конфигурации 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 - вы должны получить список доступных шифров и некоторую информацию о сеансе. Вам следует не получить предупреждение о сертификате.