文档中心
SSL鏍硅瘉涔︿笉琚俊浠伙紵5鍒嗛挓鎼炴噦鍘熷洜涓庤В鍐虫柟妗?txt
时间 : 2025-09-27 16:37:23浏览量 : 1
什么是SSL根证书不被信任?

想象一下,你走进一家银行办理业务,柜台人员向你出示了一张工作证。但你不认识发证机构,无法确认这张证件是否真实——这就是浏览器遇到"SSL根证书不被信任"时的处境。
SSL根证书是数字证书体系的"最高权威",就像身份证的发证机关(公安局)一样。当浏览器提示"SSL根证书不被信任"时,意味着它无法验证网站使用的SSL证书是否来自已知的可信机构。
为什么会出现这个问题?(技术原理详解)
1. 自签名证书的典型场景
小明在公司内网搭建了一个Wiki系统,为了加密传输,他自己生成了SSL证书。当同事访问时,浏览器就会警告:
```
此网站的安全证书有问题
此网站出具的安全证书不是由受信任的机构颁发的
这是因为小明的证书没有经过CA(Certificate Authority)认证机构的背书,就像自己手写的工作证没有公安局盖章一样不可信。
2. 中间证书缺失的连锁反应
假设一个网站的证书链是这样的:
根证书(GeoTrust) → 中间证书(GeoTrust RSA CA) → 网站证书(example.com)
如果服务器只配置了网站证书而忘记部署中间证书,就会导致验证链条断裂。好比出示身份证时只给了卡片却拿不出公安局的授权文件。
3. 操作系统/浏览器过期的典型案例
Windows XP系统默认不包含Let's Encrypt的根证书(DST Root CA X3)。2025年9月后,使用旧系统的用户访问Let's Encrypt保护的网站就会看到警告:
NET::ERR_CERT_AUTHORITY_INVALID
这就像拿着2025年的新版人民币去只认识老版人民币的验钞机识别一样会报错。
6种实用解决方案(附操作截图)
方案1:安装缺失的根证书(企业环境适用)
步骤:
1. 从可信来源获取.crt格式的根证书文件
2. Windows:运行`certmgr.msc` → "受信任的根证书颁发机构" → 右键导入
3. macOS:钥匙串访问 → "系统"钥匙串 → 文件 > 导入项目

方案2:补全中间证书(站长必看)
通过SSL检测工具(如[SSL Labs](https://www.ssllabs.com/))检查缺失的中间证书记录:
Chain issues: Incomplete
Missing chain: Intermediate CA Certificate
在Nginx配置中补充中间证书:
```nginx
ssl_certificate /path/site.crt;
ssl_certificate_key /path/site.key;
↓↓↓关键配置↓↓↓
ssl_trusted_certificate /path/intermediate.crt;
方案3:更新操作系统/浏览器(个人用户首选)
Windows更新步骤:
1. Win+R输入`winver`查看当前版本
2. Windows Update中安装所有可选更新
3. IE浏览器会自动同步更新受信任存储
方案4:开发环境的特殊处理
使用Chrome时可以通过以下方式临时绕过警告:
1. 在警告页面输入`thisisunsafe`(无输入框直接按键)
2. 或启动参数加`--ignore-certificate-errors`
??注意:这仅适用于本地开发测试!
方案5:企业级批量部署方案
通过组策略(GPO)统一部署:
```powershell
certutil -addstore -f "Root" corp_root.crt
配合SCCM或Intune可实现全网自动更新。
方案6:选择兼容性更好的CA机构
对比不同CA的兼容性:
| CA机构 | XP兼容 | Android兼容 | IoT设备兼容 |
||--|-|-|
| Let's Encrypt | ? | ?? | ? |
| DigiCert | ?? | ?? | ?? |
| GlobalSign | ?? | ?? | ?? |
SSL信任机制的深度解析
现代操作系统通过"信任锚库"管理可信CA。以Windows为例:
1. 微软受控流程:新CA需通过[Microsoft Root Certificate Program](https://docs.microsoft.com/en-us/security/trusted-root/program-requirements)严格审核
2. 自动更新机制:每月第二个星期二通过Windows Update推送根证书记录更新
3. 分级管理架构:
- Enterprise CA(企业私有CA)
- Public CA(公共商业CA)
- Self-Signed(自签名)
当验证失败时,浏览器实际执行了以下检测流程:
```mermaid
graph TD
A[接收服务器证书] --> B{检查有效期?}
B -->|有效| C{域名匹配?}
B -->|过期| G(显示警告)
C -->|匹配| D{验证签名链?}
C -->|不匹配| G
D --> E{根证书记录存在?}
E -->|存在| F[建立安全连接]
E -->|不存在| G
Web安全最佳实践建议
1. 运维人员:
- 定期使用`openssl x509 -enddate -noout -in cert.pem`检查到期时间
- CRL/OCSP配置双重保障吊销检查
2. 开发者:
```java
// Java代码示例:严格模式验证
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, new TrustManager[] {
new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
throw new CertificateException("No client certs allowed!");
}
//...其他校验方法
}
}, new SecureRandom());
```
3. 普通用户:
- Chrome地址栏出现红色??图标时必须警惕
- https://开头的网银等关键服务出现警告应立即联系客服
记住一个基本原则:"宁可错杀一百不可放过一个"。现代浏览器的严格策略虽然可能造成偶尔误报,但这是防范中间人攻击的必要代价。当遇到不明来源的SSL警告时,"不要继续访问"永远是最安全的选择。
TAG:ssl根证书不被信任,ssl证书显示不安全怎么办,ssl证书有问题怎么办,ssl证书无效,是否继续访问,ssl证书不可用