Ssl-Certificate

Chrome 桌面和 android 拒絕接受受信任的自簽名證書

  • March 25, 2022

我使用以下命令使用 OpenSSL 1.1.1b(2019 年 2 月 26 日)創建了一個自簽名證書:

openssl req -nodes -new –days 900 -subj /CN=192.168.0.104:8080 -x509 -keyout server.key -out server.crt

然後我使用 windows mmc將生成的 server.crt 導入控制台根目錄 -> 證書 - 目前使用者 -> 受信任的根證書頒發機構 -> 證書

當我轉到 192.168.0.104:8080 的 chrome 頁面時,它告訴我該頁面是“不安全的”(如果我查看證書資訊,證書路徑下的證書狀態顯示“此證書正常”。

我在我的安卓手機上做了類似的過程,將它上傳到我的手機,在加密和憑據設置部分添加證書。

但是,當我轉到該頁面時,它告訴我“伺服器的證書與 URL 不匹配”。

我在這裡做錯了什麼?

更新:

我現在正在使用 req.conf

[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
C = US
ST = CA
L = Belmont
O = N/A
OU = N/A
CN = 192.168.0.104
[v3_req]
subjectAltName = @alt_names
[alt_names]
DNS.0 = localhost
IP.0 = 192.168.0.104

並使用以下命令創建證書和密鑰:

openssl req -x509 -nodes -days 999 -newkey rsa:2048 -keyout server.key -out server.crt -config req.conf

然後我在 Windows 上重新啟動了 chrome(我不敢相信在 2019 年仍然需要​​重新啟動程序才能使設置生效)。然後 Windows chrome 可以很好地辨識它。

但是在 android 上,我什至無法安裝此證書 - 它告訴我“安裝證書需要私鑰”。這更令人困惑。

  1. **Chrome 需要 SAN。**兩年來,Chrome 一直在證書中使用主題備用名稱 (SAN) 擴展,而不是上個世紀使用的主題中的 CommonName (CN) 屬性。(其他瀏覽器、所有 TTBOMK 以及今天幾乎所有的客戶端都更喜歡SAN,但如有必要會回退到主題 CN;Chrome 不會。)您不會告訴我們您的 OpenSSL 配置文件中有什麼,或者您使用什麼版本. OpenSSL 1.1.1 現在有一個命令行選項-addextreq -new -x509但除此之外,您需要至少在邏輯上在配置文件中設置 SAN——儘管在 Unix 上,我相信WSL,您可以讓 shell 將該配置文件創建為自動臨時文件與<(commands)(或在 zsh 中=(commands))。看:

使用可在 Chrome 58 中執行的 openssl 生成自簽名證書

無法擺脫帶有自簽名證書的 chrome 中的“net::ERR_CERT_COMMON_NAME_INVALID”錯誤

https://security.stackexchange.com/questions/172440/generate-x509- err-cert-common-name-invalid

https://security.stackexchange.com/questions/74345/provide-subjectaltname-to-openssl-directly-on-command-line

https://security.stackexchange.com/questions/ 158632/burp-suite-although-my-configurations-are-correct-still-chrome-doesnt-allows

但請注意,這些 Q 是關於使用 SAN 條目類型 DNS 的域名證書;對於 IP 地址,您需要改用 IP。

  1. **省略埠。**即使對於仍然使用主題 CN 的瀏覽器/客戶端,它也應該是沒有埠的主機名或 IP 地址。(對於 SAN,您不會弄錯,因為 SAN 語法允許 DNS:dommainname 或 IP:IPv4or8addr 而沒有埠。)

PS:8080 通常用於備用 HTTP,8443 用於備用 HTTPS。將 8080 用於 HTTPS 令人困惑。

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