我为 localhost 创建的自签名 SSL 无法被信任,尽管我已将其导入 chrome

我为 localhost 创建的自签名 SSL 无法被信任,尽管我已将其导入 chrome

我正在创建 https 服务器端,用于对需要 https 的 Instagram 进行 OAuth 练习。

我通过运行以下链接中的脚本使用 ssl 生成了证书:https://gist.github.com/bjanderson/075fadfccdd12623ab935e57eff58eb4

脚本运行良好,我收到了所有预期的文件。我已将 ca.crt 导入到受信任的根证书颁发机构下的 chrome,但 chrome 仍然不信任它。导入位置是否合适,因为 chrome 有许多不同的部分可以导入 ca.crt。

我收到以下错误:

证书 - 缺少主题备用名称此站点的证书不包含含有域名或 IP 地址的主题备用名称扩展。

证书 - 缺失 此站点缺少有效、可信的证书(net::ERR_CERT_AUTHORITY_INVALID)。

我该如何解决这两个问题并让我的 chrome 信任我的自签名证书?

答案1

主题备用名称是,正如它所说,列出主题的替代名称。这是对主题字段,因为它允许多个主题名称,而主题只允许一个。现代浏览器只查看主题备用名称扩展并忽略主题场地。

要制作可以在现代浏览器上运行的自签名证书,请创建类似于以下内容的 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.orgwww.example.com指向127.0.0.1您可以访问www.example.com,或者www.example.orgChrome 不会抱怨。

要测试,请运行:

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

将浏览器指向https://www.example.org:8443- 您应该会获得可用密码套件列表和一些会话信息。您应该不是收到证书警告。

相关内容