Chrome 桌面和 android 拒绝接受可信的自签名证书

B T*_*B T 5 google-chrome android ssl-certificate windows-8.1

我使用 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 导入到 Console Root -> Certificates - Current User -> Trusted Root Certification Authorities -> Certificates

当我转到 chrome 页面 192.168.0.104:8080 时,它告诉我该页面“不安全”(如果我查看证书信息,证书路径下的证书状态显示“此证书没问题”。

我在我的 android 手机上做了一个类似的过程,将它上传到我的手机,在加密和凭据设置部分添加证书。

但是,当我转到该页面时,它告诉我“服务器的证书与 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
Run Code Online (Sandbox Code Playgroud)

并使用以下命令创建证书和密钥:

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

然后我在 Windows 上重新启动了 chrome(我不敢相信在 2019 年仍然需要​​重新启动程序以使设置生效)。Windows chrome 然后可以很好地识别它。

但是,在 android 上,我什至无法安装此证书 - 它告诉我“安装证书所需的私钥”。这更令人困惑。

dav*_*085 5

  1. Chrome 需要 SAN。两年来,Chrome 在证书中使用了服务器备用名称 (SAN) 扩展名,而不是上世纪使用的主题中的 CommonName (CN) 属性。(其他浏览器、TTBOMK 和几乎所有今天的客户端都更喜欢SAN,但在必要时会回退到 Subject 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-虽然-我的配置-正确-仍然-chrome-doesnt-allows

但请注意,这些 Q 是关于域名的证书,它使用 SAN 条目类型 DNS;对于 IP 地址,您需要改用 IP。

  1. 省略端口。即使对于仍然使用主题 CN 的浏览器/客户端,它也应该是没有端口的主机名或 IP 地址。(对于 SAN,您不会出错,因为 SAN 语法允许 DNS:dommainname 或 IP:IPv4or8addr 而没有端口。)

PS:8080 通常用于备用 HTTP,8443 用于备用 HTTPS。将 8080 用于 HTTPS 令人困惑。


归档时间:

查看次数:

3534 次

最近记录:

5 年,11 月 前