自签发https证书,您的连接不是私密连接,详细了解此警告 net::ERR_CERT_AUTHORITY_INVALID
报错信息如下:
使用自签发https证书的站点,导入全局证书之后,chrome浏览器下访问时候,报错:
您的连接不是私密连接
攻击者可能会试图从 gitlab.test.com 窃取您的信息(例如:密码、消息或信用卡信息)。详细了解此警告
net::ERR_CERT_AUTHORITY_INVALID
开启增强型保护,获享 Chrome 的最高级别安全防护
gitlab.test.com 通常会使用加密技术来保护您的信息。Chrome 此次尝试连接到 gitlab.test.com 时,该网站发回了异常的错误凭据。这可能是因为有攻击者在试图冒充 gitlab.test.com,或者 Wi-Fi 登录屏幕中断了此次连接。请放心,您的信息仍然是安全的,因为 Chrome 尚未进行任何数据交换便停止了连接。
您目前无法访问 gitlab.test.com,因为此网站使用了 HSTS。网络错误和攻击通常是暂时的,因此,此网页稍后可能会恢复正常。
解决办法如下:
根据你提供的错误信息,以下是问题的核心:
- **错误代码**:`net::ERR_CERT_AUTHORITY_INVALID`
- **原因**:Chrome 认为你的 HTTPS 证书无效,因为它不是由受信任的证书颁发机构(CA)签发的。
- **HSTS 问题**:由于你的站点启用了 HSTS(HTTP Strict Transport Security),即使你尝试通过 HTTP 访问,浏览器也会强制使用 HTTPS,导致无法绕过证书验证。
以下是对问题的详细分析和解决方法:
---
### **1. 问题分析**
#### **(1) 自签发证书不被信任**
自签发的 HTTPS 证书默认不被操作系统或浏览器信任。即使你已经将证书导入到系统的全局信任库中,仍可能存在以下问题:
- 导入的证书格式不正确。
- 浏览器未正确加载系统信任库中的证书。
- 证书链不完整(缺少中间证书)。
#### **(2) HSTS 的影响**
HSTS 是一种安全机制,要求浏览器始终通过 HTTPS 访问指定的网站。如果证书无效,浏览器会直接阻止访问,而不会允许用户忽略警告。
#### **(3) Chrome 的缓存机制**
Chrome 会缓存证书状态和 HSTS 设置。即使你更新了证书或信任库,浏览器可能仍然使用旧的缓存数据。
---
### **2. 解决方法**
#### **(1) 确保证书格式正确**
- 确保你的自签发证书是有效的 PEM 格式文件,并包含完整的证书链(包括根证书和中间证书)。
- 如果你使用 `openssl` 生成证书,可以参考以下命令:
```bash
# 生成私钥
openssl genrsa -out ca.key 2048
# 生成根证书
openssl req -new -x509 -days 365 -key ca.key -out ca.crt \
-subj "/C=CN/ST=YourState/L=YourCity/O=YourOrg/CN=MyCA"
# 生成服务器私钥
openssl genrsa -out server.key 2048
# 生成证书签名请求 (CSR)
openssl req -new -key server.key -out server.csr \
-subj "/C=CN/ST=YourState/L=YourCity/O=YourOrg/CN=gitlab.test.com"
# 使用根证书签发服务器证书
openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt
- 将生成的
ca.crt
和server.crt
文件配置到你的 Web 服务器中。
(2) 导入证书到系统信任库
确保你已正确将根证书(ca.crt
)导入到操作系统的全局信任库中。以下是不同操作系统的具体步骤:
Windows 系统
- 双击
ca.crt
文件,打开“证书管理器”。 - 点击“安装证书”,选择“本地计算机”。
- 在“证书存储”页面,选择“将所有的证书放入下列存储”,然后选择“受信任的根证书颁发机构”。
- 完成安装后,重启 Chrome。
macOS 系统
- 双击
ca.crt
文件,打开“钥匙串访问”。 - 找到你的证书,右键点击并选择“获取信息”。
- 展开“信任”部分,将“使用此证书时”设置为“始终信任”。
- 关闭窗口并输入密码确认。
- 重启 Chrome。
Linux 系统
- 将
ca.crt
文件复制到/usr/local/share/ca-certificates/
目录:sudo cp ca.crt /usr/local/share/ca-certificates/my-ca.crt
- 更新证书存储:
sudo update-ca-certificates
(3) 清除 Chrome 的缓存
即使你已导入证书,Chrome 可能仍然缓存了旧的状态。需要清除缓存以确保浏览器重新加载证书信息:
- 打开
chrome://net-internals/#hsts
。 - 在“Delete domain security policies”中输入你的域名(如
gitlab.test.com
),然后删除。 - 重启 Chrome。
(4) 禁用 HSTS(仅限临时测试)
如果你在开发环境中,可以通过以下方法临时禁用 HSTS:
- 在 Chrome 地址栏输入
chrome://flags/
。 - 搜索
HSTS
,找到相关选项并将其禁用。 - 重启 Chrome。
注意:这种方法仅适用于测试环境,切勿在生产环境中禁用 HSTS。
(5) 使用开发者模式忽略警告(临时解决方案)
如果以上方法都无法解决问题,可以尝试手动忽略警告:
- 在 Chrome 中访问
https://gitlab.test.com
。 - 点击地址栏左侧的“不安全”提示。
- 选择“高级”,然后点击“继续前往 gitlab.test.com(不安全)”。
注意:这种方法仅适用于临时测试,且存在安全风险。
3. 验证配置
完成上述步骤后,验证证书是否被正确识别:
- 在 Chrome 中访问
https://gitlab.test.com
。 - 点击地址栏左侧的锁图标,查看证书信息。
- 确保证书显示为“受信任”。
4. 推荐替代方案
如果你希望长期解决此问题,可以考虑以下替代方案:
(1) 使用免费的可信证书
使用 Let's Encrypt 提供的免费 HTTPS 证书。工具如 Certbot 可以帮助你快速申请和部署证书。
(2) 使用内网穿透工具
如果你的站点仅用于内部网络,可以使用内网穿透工具(如 Ngrok 或 Frp)来提供 HTTPS 支持,而无需自己配置证书。
5. 总结
通过以上方法,应该能够解决 net::ERR_CERT_AUTHORITY_INVALID
错误,并让 Chrome 正常访问你的站点。如果仍有问题,请提供更多上下文信息(如操作系统、Web 服务器类型等),如果有问题,再进一步分析原因,和解决问题。

赠人玫瑰
手留余香
我们曾如此渴望命运的波澜,到最后才发现:人生最曼妙的风景,竟是内心的淡定与从容……我们曾如此期盼外界的认可,到最后才知道:世界是自己的,与他人毫无关系!-杨绛先生
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的