自签浏览器授信 CA 证书
_此服务器无法证实它就是 `127.0.0.1` - 它的安全证书没有指定主题备用名称。这可能是因为某项配置有误或某个攻击者拦截了您的连接_
自签 `SSL` 证书浏览器不授信,提示连接**不安全**解决办法,自签证书时增加 `SAN` 信息,将证书添加到`受信任的根证书颁发机构`
| 配置前 | 访问拦截 | 配置后 |
| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
| [](https://imgse.com/i/pAIjq0I)| |  |
### 主题备用名称(SAN)说明:
- **主题备用名称** 是证书的扩展字段,它允许证书支持多个域名或 IP 地址。对于自签证书,如果你希望它能够适用于 127.0.0.1 或 localhost,你需要在生成证书时指定这个 IP 地址或主机名。
- **问题根源**:自签证书通常只会将证书的 Common Name (CN) 字段设置为一个值(如 localhost 或 127.0.0.1),但在现代浏览器中,浏览器更偏向于检查 SAN 字段,以确保安全性。
### 1.创建一个 OpenSSL 配置文件
`openssl.ini`
```ini
[ 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.生成自签证书
使用这个配置文件来生成证书和私钥:
```bash
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.检查证书
你可以使用工具如 (https://www.openssl.org/) 或浏览器的证书查看器来验证生成的证书是否包含正确的 **SAN**。
使用 `openssl` 命令查看证书:
```bash
openssl x509 -in certificate.crt -text -noout
```
确保在证书信息中可以看到类似下面的部分:
```less
X509v3 extensions:
X509v3 Subject Alternative Name:
DNS:localhost, IP Address:127.0.0.1
```
如果不包含以上内容,请更新 `openssl` 重新生成,否则浏览器还是会提示:
_此服务器无法证实它就是 127.0.0.1 - 它的安全证书没有指定**主题备用名称**。这可能是因为某项配置有误或某个攻击者拦截了您的连接_
### 4.导入证书到浏览器
- 双击 `certificate.crt` 安装
1. **安装证书**:-> **本计算机** -> **将所有的证书都放入下列存储** -> **浏览** -> `受信任的根证书颁发机构`
2. 退出浏览器后台(不是关闭标签页)
3. 重新打开访问对应网站
- 谷歌浏览器导入
1. 打开 Chrome 浏览器,进入 `chrome://certificate-manager/`。
2. 选择“本地证书”,管理从 Windows 导入的证书。
3. 在 `受信任的根证书颁发机构` 标签页下,点击“导入”。
4. 选择你生成的自签证书 certificate.crt,然后将其添加到受信任的根证书库中。
5. 重启浏览器
### 总结:
浏览器警告的原因是自签证书没有设置主题备用名称(SAN)。要解决这个问题,生成自签证书时需要指定 SAN,确保包括你打算访问的主机名或 IP 地址(如 `localhost` 和 `127.0.0.1`)。 为何行文一股AI味?内容倒是没问题 原来还可以这样,感谢楼主分享 有用,收藏一下 BrutusScipio 发表于 2024-12-3 10:54
为何行文一股AI味?内容倒是没问题
对一部分AI生成 感谢楼主,学习了 感谢楼主,学习了 感谢楼主,正好我最近实验课遇到这个问题,看完明白了
页:
[1]