首页/安全/加密与证书速查/用 CA 签发证书的流程

用 CA 签发证书的流程

签发流程:提交 CSR → CA 验证域名或组织信息 → 生成序列号与扩展配置 → 用 CA 私钥签出证书;自建 PKI 用 openssl ca 或 x509 -req 完成,公共 CA 走 ACME 或控制台。

加密与证书速查安全更新于 2026-10-13

签发流程是什么

用 CA 签发证书分四步:申请方生成密钥对并提交 CSR,CA 按证书用途验证域名或组织信息,CA 侧生成序列号与扩展配置,最后用 CA 私钥签出证书。自建 PKI 用 openssl ca 或 x509 -req 完成,公共 CA 走 ACME 协议或控制台流程。关键点是证书上的扩展由 CA 策略决定,而不是 CSR 里写什么就有什么。

基本信息

验证方式域名:HTTP 文件、DNS 记录;组织:工商与回拨核验
签发命令openssl ca(带索引与序列号管理)或 x509 -req(单次签名)
扩展决定SAN、扩展用途、有效期由 CA 侧配置决定
产出服务器证书与拼装好的链文件

典型使用场景

  • 内部系统签发:自建 CA 统一签发并分发根证书
  • 批量签发:用 openssl ca 维护索引与序列号数据库
  • 临时测试:用 x509 -req 一次性签出可用证书
  • 对接公共 CA:用 ACME 客户端自动签发与续期
  • 排错:核对签发结果中的名称与用途扩展是否符合预期

x509 -req 单次签发

x509 -req 单次签发
openssl req -new -key server.key -out server.csr -subj '/CN=example.com'   # 生成 CSR
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial \
  -days 365 -out server.crt                                                # 单次签发
openssl x509 -in server.crt -noout -text | grep -A2 'Alternative Name'      # 回读扩展
openssl verify -CAfile ca.crt server.crt                                   # 验证链

四种签发方式

方式适用限制
openssl ca正式自建 PKI需维护索引、序列号与吊销库
x509 -req一次性测试不入库,无法走标准吊销流程
ACME公信 CA 自动化受验证方式与限流约束
CA 控制台人工审核场景流程较长,便于留痕
签发后第一件事是回读证书:核对名称扩展是否覆盖全部要用的域名、用途扩展是否包含服务端认证、有效期与预期是否一致,避免上线后才发现扩展缺失。

自建 PKI 结构建议

  • 根私钥离线保存,只用于签发中间 CA
  • 日常签发由中间 CA 承担,便于按用途隔离
  • 维护索引与序列号文件,保证吊销流程可用
  • 签发脚本纳入版本管理,证书与密钥不进代码仓库
把根私钥放在联网主机上做日常签发,等于把整个信任体系的钥匙暴露在业务网络里;一旦泄露,所有由其签发的证书都需要重签。

易错点

  • 生产 CA 使用单次签名命令手工签发:证书不入库,后续吊销与审计无处查询
  • 以为 CSR 里的扩展会原样保留:CA 策略可以覆盖或丢弃,签发后必须回读核对
  • 自建 CA 时把根私钥放在联网主机上:日常签发应使用中间 CA,根私钥离线保存
  • 签发数量多却不维护序列号:序列号重复会让客户端缓存与吊销查询出现误判
  • CSR 与私钥不配对就提交:签发后才发现不匹配,只能重新走一遍流程

数据来源与参考

  • RFC 5280
  • OpenSSL 官方文档(x509 / ca)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌