4. 证书生命周期管理
证书这东西,说白了就是一张数字身份证。但它不是发下来就完事了——从申请到最终吊销,每一步都有坑。我参与过好几个 PKI 项目,发现很多团队只关注签发环节,结果后期运维频频出问题。嗯,今天咱们就把整个生命周期捋一遍。
核心观点:证书生命周期的管理质量,直接决定线上业务的可用性和安全性。任何一个环节的疏忽,都可能导致事故。
4.1 全流程总览
先看一张整体流程图,后面咱们再逐段拆解。
4.2 证书申请与验证
申请环节我习惯分成两种情况:内部 PKI 和公钥 CA。内部环境通常用 CSR(Certificate Signing Request) 发起,私钥在本地生成,公钥一起打包发往 CA 服务器。公钥 CA 则需要提交域名所有权证明,比如 DNS TXT 记录或 HTTP 文件验证。
我的经验:曾经有个同事在生成 CSR 时私钥密码设得太简单,结果被暴力破解。我建议私钥密码至少 16 位,含大小写字母、数字和特殊字符。另外,CSR 中的 CN(Common Name)必须与域名完全一致,多一个空格都算不匹配。
| 场景 | 验证方式 | 耗时 | 典型用途 |
|---|---|---|---|
| 内部 PKI | Web 登录 / API + 审批流程 | 秒级 ~ 分钟级 | 微服务互信、内部系统认证 |
| 公共 CA (DV) | DNS / HTTP 文件验证 | 几分钟 ~ 几小时 | Web 站点 HTTPS |
| 公共 CA (OV / EV) | 组织资质 + 人工审核 | 1 天 ~ 1 周 | 电商、金融等高安全场景 |
4.3 证书签发
签发这一步看似简单,但有一个关键点:签名算法。我见过不少老项目还在用 SHA1 签名,说实话,这早就被浏览器标记成不安全了。你想想看,2024 年用 SHA1 的证书,所有主流客户端都会报安全警告。
避坑指南:我建议统一使用 SHA256 或更强的签名算法。另外,证书有效期也需要注意——内部 PKI 可以设为 2~3 年,但公网证书现在普遍推荐 90 天到 1 年。我曾经接手过一个项目,证书有效期写了 10 年,结果 CA 拒绝签发,改到 3 年才通过。
4.4 安全存储
证书和私钥的存储,我感觉是生命周期里最容易出乱子的环节。很多团队把证书扔在代码仓库里,或者放到共享 NFS 上。这么做非常危险——私钥一旦泄露,证书就废了。
我个人的做法是:
- 私钥绝不能明文落地:用 HSM(硬件安全模块) 或云厂商的 KMS(密钥管理服务) 保管。
- 证书文件做完整性校验:部署时计算 SHA256,跟预期比对,防止篡改。
- 定期换钥:即使证书没到期,私钥也可以轮换。我曾经帮一个客户做项目,他们的私钥两年没换,被拖库后黑客立刻解密了通信日志。
推荐存储方案:
· 容器环境 → Kubernetes Secret + cert-manager 自动管理
· 传统服务器 → 系统信任存储(如 /etc/ssl/certs)+ 权限 600
· 移动端 / IoT → 安全芯片或系统 Keychain
4.5 证书更新
更新分两种:主动更新和自动续期。我特别推荐你走自动续期路线,尤其是用 ACME 协议配合 Let's Encrypt 这类 CA。手动更新最大的问题是——人总会忘。我以前负责的一个内部平台,每年手动替换证书,结果有一次因为出差忘了,导致业务中断 4 小时。
# 示例:使用 certbot 自动续期(ACME 协议)
certbot renew --quiet --no-self-upgrade
# 验证续期是否成功
certbot certificates
更新策略建议:
· 生产环境证书到期前 30 天开始告警
· 到期前 7 天执行自动更新
· 更新后立即做端到端连通性测试
· 保留至少一个旧版本证书用于回滚(有效期 24 小时)
4.6 证书吊销
吊销通常是因为私钥泄露、域名不再使用、或者员工离职。嗯,这里要注意,吊销不是直接删掉证书,而是将其加入 CRL(证书吊销列表) 或发布到 OCSP(在线证书状态协议)。
| 吊销方式 | 原理 | 实时性 | 适用场景 |
|---|---|---|---|
| CRL | CA 定期发布黑名单文件 | 低(可能延迟数小时) | 对外网公开证书 |
| OCSP | 客户端实时查询状态 | 高 | 高安全要求、低延迟场景 |
| OCSP Stapling | 服务端缓存 OCSP 响应并附加给客户端 | 极高 | HTTPS 性能优化 |
我经历过最头疼的一次:一个内部 CA 的 CRL 更新频率设成 7 天,结果半天内就有 3 个证书被吊销,但客户端一直拿不到最新列表,导致已吊销的证书还在被信任。后来我强制把 CRL 更新间隔压到 1 小时,并且搭了 OCSP 响应器。
4.7 证书归档与销毁
证书到期或吊销后,不能随手删掉。你需要保留一段时间用于审计。我自己的经验是:
- 电子签名证书:保留至少 5 年(法律要求)
- 内部服务证书:保留 1 年用于事故回溯
- 私钥:到期后立即销毁或标记为不可恢复
销毁规范:不要只执行 rm 命令,磁盘擦写可能被恢复。建议使用 shred 工具覆写多次,或者直接销毁存储介质。
好了,以上就是一个完整证书生命周期里我觉得最重要的每个节点。你在实际项目中可以根据自己的环境做微调,但整体骨架建议保持不变。