← 返回题目列表

自签名证书和内网 CA 证书有什么区别?为什么浏览器会提示不安全?

中等 第 18 / 29 题 更新于 2026/08/02
HTTPSCA自签名证书

简化版

自签名证书是自己给自己签发的证书,不在浏览器默认信任链里,所以浏览器无法确认它属于真正的站点,会提示不安全。

内网 CA 是企业自己建立的证书颁发机构,如果把内网根 CA 安装到客户端信任库,那么它签发的内网站点证书可以被信任。

两者都能加密传输,但信任来源不同:公有 CA 被浏览器默认信任,内网 CA 要组织内部下发信任,自签名证书通常只适合测试或受控环境。

详细版

浏览器验证证书时,会尝试构建证书链:

站点证书 -> 中间 CA -> 根 CA

如果根 CA 在系统或浏览器信任库中,证书链可信。

自签名证书通常是:

站点证书 -> 自己

浏览器没有预装这个根,因此会报错。

内网 CA 的做法是先让公司设备信任企业根 CA,再由企业 CA 签发各个内网站点证书。

这比每个服务各自使用自签名证书更可管理。

完整版教学

1. 先区分加密和信任

HTTPS 有两个目标:加密通信和认证身份。

自签名证书也可以建立加密连接。

但问题在于客户端不知道这张证书是不是攻击者伪造的。

浏览器提示不安全,重点不是“不能加密”,而是“无法验证身份”。

证书错误通常是身份信任问题,不等于 TLS 加密算法一定失效。

2. 自签名证书是什么

自签名证书由自己签发给自己。

简化链路:

CN=dev.local
Issuer=dev.local
Subject=dev.local

它没有被浏览器信任的公共 CA 签名。

所以陌生客户端无法判断它是真是假。

测试环境、临时开发环境可以使用,但不应直接用于公网生产。

3. 内网 CA 是什么

内网 CA 是组织内部建立的证书体系。

流程通常是:

  1. 创建企业根 CA。
  2. 通过 MDM、域控、镜像等方式把根 CA 下发到员工设备或服务器。
  3. 内网站点向企业 CA 申请证书。
  4. 客户端用已信任根 CA 验证这些证书。

这样内网服务也能使用 TLS,并有统一签发、吊销、轮换管理。

4. 三种证书信任模式对比

类型谁签发默认被浏览器信任适合场景
公有 CA 证书公开受信 CA公网站点
自签名证书自己签自己本地测试、临时环境
内网 CA 证书企业 CA取决于是否下发根 CA企业内网、服务间通信

关键差别是信任锚在哪里。

5. 为什么不能随便点击继续访问

浏览器出现证书告警时,可能原因包括:

  • 自签名证书不被信任。
  • 证书过期。
  • 域名不匹配。
  • 证书链缺失。
  • 证书被吊销。
  • 中间人替换了证书。

如果用户习惯性忽略告警,就可能被中间人攻击。

开发环境可以导入自己的测试 CA,但生产用户不应被要求手动忽略证书错误。

6. 内网 CA 的管理风险

内网 CA 一旦被信任,就有很大权力。

如果企业根 CA 私钥泄露,攻击者可能签发任意内部域名证书。

所以内网 CA 要做好:

  • 根 CA 离线保护。
  • 中间 CA 分级。
  • 证书模板和用途限制。
  • 吊销机制。
  • 审计日志。
  • 自动轮换。

内部可信不代表可以粗放管理。

7. 常见误区与追问

  • 误区:自签名证书不能加密。 它可以加密,但身份不被默认信任。
  • 误区:内网证书就是自签名证书。 内网 CA 可以形成组织内部信任链,管理方式不同。
  • 误区:浏览器提示不安全可以无脑忽略。 证书告警可能意味着中间人攻击。
  • 追问:为什么安装企业根 CA 后内网站点可信? 因为客户端信任链能追溯到已安装的企业根。
  • 追问:公网能用内网 CA 吗? 普通公网用户没有安装该根 CA,浏览器不会默认信任。
  • 追问:内网 CA 私钥泄露有什么后果? 攻击者可能伪造内部站点证书,影响范围很大。

8. 加强记忆

自签名的问题不是“不能锁门”,而是“没人认识这把锁是谁发的”。

公有 CA 默认被大家认,内网 CA 要组织内部先认。