Ssl-Certificate

我為 localhost 創建的自簽名 ssl 不能被信任,即使我已經將它導入到 chrome

  • February 2, 2022

我正在創建 https 伺服器端,我用它來練習 OAuth 到需要 https 的 Instagram。

我通過從以下連結執行腳本使用 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.orgwww.example.com指向127.0.0.1您可以訪問www.example.comwww.example.org沒有 Chrome 抱怨。

要測試,請執行:

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

將您的瀏覽器指向https://www.example.org:8443- 您應該獲得可用密碼套件的列表和一些會話資訊。您不應收到證書警告。

引用自:https://serverfault.com/questions/973446