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