发布时间:
此服务器无法证实它就是 127.0.0.1
- 它的安全证书没有指定主题备用名称。这可能是因为某项配置有误或某个攻击者拦截了您的连接
自签 SSL
证书浏览器不授信,提示连接不安全解决办法,自签证书时增加 SAN
信息,将证书添加到受信任的根证书颁发机构
配置前 | 访问拦截 | 配置后 |
---|---|---|
主题备用名称(SAN)说明: #
-
主题备用名称 是证书的扩展字段,它允许证书支持多个域名或 IP 地址。对于自签证书,如果你希望它能够适用于 127.0.0.1 或 localhost,你需要在生成证书时指定这个 IP 地址或主机名。
-
问题根源:自签证书通常只会将证书的 Common Name (CN) 字段设置为一个值(如 localhost 或 127.0.0.1),但在现代浏览器中,浏览器更偏向于检查 SAN 字段,以确保安全性。
1.创建一个 OpenSSL 配置文件 #
[ req ]
default_bits = 2048
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
req_extensions = v3_req # 指定请求使用 v3_req 扩展
prompt = no # 不提示输入
[ req_distinguished_name ]
C = US
ST = California
L = San Francisco
O = My Company
OU = My Department
CN = localhost
emailAddress = admin@mycompany.com
[ v3_req ]
subjectAltName = @alt_names # 引用 alt_names
[ alt_names ]
DNS.1 = localhost
IP.1 = 127.0.0.1
配置文件说明:
-
[ req_distinguished_name ] 部分:定义了证书的基本信息,
- C:国家
- ST:省份
- L:城市
- O:组织
- OU:单位
- CN:常见名称
- emailAddress:电子邮件地址
-
[ v3_req ]:这里指定了扩展字段
subjectAltName
,并引用了alt_names
部分。 -
[ alt_names ]:定义了备用名称,
DNS.1
是域名,IP.1
是 IP 地址。这里包括localhost
和127.0.0.1
,这样证书会为这两个名称生效。
2.生成自签证书 #
使用这个配置文件来生成证书和私钥:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout private.key -out certificate.crt -config ./openssl.ini -extensions v3_req
这个命令会生成一个包含 主题备用名称(SAN) 的自签证书。
days 365
:指定证书的有效期为 365 天。nodes
:表示不使用密码保护私钥。newkey rsa:2048
:生成一个新的 2048 位 RSA 密钥对。keyout private.key
:指定私钥的输出文件名。out certificate.crt
:指定证书的输出文件名。config openssl.ini
:指定自定义的 OpenSSL 配置文件。extensions v3_req
:指定证书包含 SAN 扩展
3.检查证书 #
你可以使用工具如 OpenSSL 或浏览器的证书查看器来验证生成的证书是否包含正确的 SAN。
使用 openssl
命令查看证书:
openssl x509 -in certificate.crt -text -noout
确保在证书信息中可以看到类似下面的部分:
X509v3 extensions:
X509v3 Subject Alternative Name:
DNS:localhost, IP Address:127.0.0.1
如果不包含以上内容,请更新 openssl
重新生成,否则浏览器还是会提示:
此服务器无法证实它就是 127.0.0.1 - 它的安全证书没有指定主题备用名称。这可能是因为某项配置有误或某个攻击者拦截了您的连接
4.导入证书到浏览器 #
- 双击
certificate.crt
安装- 安装证书:-> 本计算机 -> 将所有的证书都放入下列存储 -> 浏览 ->
受信任的根证书颁发机构
- 退出浏览器后台(不是关闭标签页)
- 重新打开访问对应网站
- 安装证书:-> 本计算机 -> 将所有的证书都放入下列存储 -> 浏览 ->
- 谷歌浏览器导入
- 打开 Chrome 浏览器,进入
chrome://certificate-manager/
。 - 选择“本地证书”,管理从 Windows 导入的证书。
- 在
受信任的根证书颁发机构
标签页下,点击“导入”。 - 选择你生成的自签证书 certificate.crt,然后将其添加到受信任的根证书库中。
- 重启浏览器
- 打开 Chrome 浏览器,进入
总结: #
浏览器警告的原因是自签证书没有设置主题备用名称(SAN)。要解决这个问题,生成自签证书时需要指定 SAN,确保包括你打算访问的主机名或 IP 地址(如 localhost
和 127.0.0.1
)。