1. 证书基础认知:X.509、证书链与PKI核心概念

说实话,很多人一上来就让我配HTTPS、配mTLS,结果连证书长什么样都没搞清楚。我见过太多线上事故——证书过期、链没配全、根证书不信任……说白了,都是基础没打牢。

这一章,咱们就把地基夯实。你搞懂了X.509、证书链和PKI,后面批量管理才能玩得转。

1.1 X.509证书——你到底长什么样?

X.509是国际电信联盟(ITU-T)定义的一个标准。它规定了公钥证书的格式。现在用的基本都是X.509 v3版本。

我习惯把证书想象成「数字身份证」。你想想看,身份证上有姓名、照片、发证机关、有效期。证书也一样——它绑定了一个身份和一把公钥。

一个标准的X.509 v3证书包含以下核心字段:

字段 说明 我踩过的坑
版本号 目前主流是v3(值为2) 有人用v1,不支持扩展,导致客户端校验失败
序列号 CA签发的唯一编号 吊销时靠它,别搞重复了
签名算法 如SHA256-RSA、ECDSA SHA1已被弃用,别用了
颁发者 签发该证书的CA名称 链拼接时,颁发者和主体必须对上
有效期 notBefore ~ notAfter 时间不同步?证书直接废了
主体 证书持有者身份 CN和SAN别填错,否则浏览器报警
公钥 RSA/ECC公钥信息 密钥长度别低于2048位
扩展 v3核心,如SAN、密钥用法 缺了SAN,现代浏览器直接拒绝

核心要点:证书的本质是「公钥 + 身份信息 + CA的数字签名」。你信任CA,就信任这个证书。

1.2 证书链与信任模型——信任是怎么传递的?

你不可能信任每一个证书。那怎么办?信任是传递的。

证书链(Certificate Chain)就是一条信任路径:

  • 根证书:自签名,信任锚点。浏览器/操作系统内置。
  • 中间证书:由根CA签发,用于签发终端证书。
  • 终端证书:你服务器上用的那个,也叫叶子证书。

我记得有一次帮客户排查问题,他们只配了终端证书,没配中间证书。结果安卓手机全报错,因为安卓不信任那个中间CA。嗯,这就是链不完整的问题。

下面这张图,我建议你多看两眼。它解释了信任是怎么一层层传递的:

证书链与信任传递模型 根CA证书 自签名 · 信任锚点 中间CA证书 由根CA签发 终端证书 由中间CA签发 信任传递逻辑 你信任根CA → 根CA担保中间CA → 中间CA担保终端证书 → 你信任终端证书 信任锚点 链式担保 业务使用

我的建议:部署时永远把「终端证书 + 中间证书」拼接成一个文件。Nginx的ssl_certificate就指向它。别只放终端证书。

1.3 公钥基础设施(PKI)——谁在背后撑起这一切?

PKI不是某个软件,而是一套体系。它包括策略、硬件、软件、人员,用来管理密钥和证书的整个生命周期。

PKI的核心角色有这几个:

  • CA(证书颁发机构):签发和吊销证书。核心中的核心。
  • RA(注册机构):审核申请者身份,把审核结果告诉CA。
  • VA(验证机构):提供证书状态查询,比如OCSP响应器。
  • 证书库:存储证书和CRL的地方,通常是目录服务。
  • 终端实体:使用证书的人或设备,比如你的Web服务器。

我曾经帮一家金融公司搭过内部PKI。他们之前用自签名证书,每个服务一套,管理全靠Excel。结果证书过期了没人知道,生产环境直接挂了。嗯,这就是没有PKI体系的代价。

PKI的核心流程,说白了就三件事:

  1. 注册与签发:生成密钥对 → 提交CSR → CA审核 → 签发证书。
  2. 使用与验证:TLS握手时出示证书 → 对方验证证书链 → 建立信任。
  3. 更新与吊销:证书到期前续期 → 私钥泄露时吊销 → 发布CRL/OCSP。

注意:私钥一旦泄露,证书必须立即吊销。别想着「先凑合用」。我曾经见过一个案例,私钥泄露后拖了3天才吊销,结果被中间人攻击,数据全丢了。

1.4 信任模型——你信谁,怎么信?

PKI里有几种常见的信任模型。我挑两个最常用的说说:

信任模型 原理 适用场景 我的看法
层次模型 一个根CA,下面挂中间CA,树状结构 互联网公开PKI、企业内部PKI 最常用,管理清晰,根CA离线更安全
网状模型 多个CA互相交叉签名 联盟组织、跨公司合作 灵活性高,但信任路径复杂,容易出环

我个人更推荐层次模型。你想想看,根CA离线保存,中间CA在线服务。就算中间CA被攻破,根CA一吊销,整个子树就废了,但根CA本身没事。这就是分层的好处。

1.5 本章小结——你该带走什么?

  • X.509证书 = 公钥 + 身份 + CA签名。v3扩展里的SAN字段,现代浏览器必看。
  • 证书链 = 根CA → 中间CA → 终端证书。部署时链必须完整。
  • PKI = 一套管理证书生命周期的体系。CA、RA、VA各司其职。
  • 信任模型:层次模型最稳,根CA离线保存是铁律。