创建和管理证书链
生成根证书颁发机构、中间证书颁发机构和终端实体证书,并正确验证证书链。
创建和管理证书链 是 CoddyKit 上的免费 Cryptology Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cryptology Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cryptology Academy 课程共包含 4 节课。
生成根 CA
根 CA 是一种自签名证书,充当最终信任锚点。根 CA 私钥必须离线保存(存放在物理隔离系统或 HSM 上),因为一旦泄露,整个 PKI 都会受到破坏。“openssl req -x509 -new -nodes -key root_key.pem -sha256 -days 3650 -out root_cert.pem”会生成有效期为 10 年的自签名根证书。
生成中间 CA
中间 CA 由根 CA 签名,用于日常证书签发。首先生成中间密钥和 CSR:“openssl req -new -key intermediate_key.pem -out intermediate.csr”。然后由根 CA 对其签名:“openssl x509 -req -in intermediate.csr -CA root_cert.pem -CAkey root_key.pem -CAcreateserial -days 1825 -out intermediate_cert.pem”。
生成终端实体证书
终端实体证书(叶证书)由中间 CA 签名,用于特定服务器或客户端。生成带有主题备用名称(SAN)的服务器密钥和 CSR,然后使用中间 CA 签名:“openssl x509 -req -in server.csr -CA intermediate_cert.pem -CAkey intermediate_key.pem -CAcreateserial -extensions v3_req -days 365 -out server_cert.pem”。
中间 CA 如何保护根 CA
根 CA 私钥处于离线状态,仅用于签署少量中间 CA 证书。日常证书签发由在线中间 CA 完成。如果某个中间 CA 被入侵,可以将其吊销并替换,而不会危及根 CA。根密钥从未暴露在网上,因此仍然安全。
openssl ca 命令
“openssl ca”命令提供了比“openssl x509 -req”更完整的 CA 流程。它会维护证书数据库(index.txt)、从序列号文件分配序列号,并处理 CRL 生成。它要求使用正确的 openssl.cnf 配置文件,其中包含用于定义证书策略和路径长度限制的 CA 专用区段。
组装证书链文件
网站服务器的完整证书链文件应按顺序包含终端实体证书,后面接中间 CA 证书,并在根证书之前结束。根证书不会包含在内,因为浏览器已经预装了根证书库。拼接顺序为:“cat server_cert.pem intermediate_cert.pem > chain.pem”。顺序错误会导致 TLS 握手失败。
验证证书链
“openssl verify -CAfile root_cert.pem -untrusted intermediate_cert.pem server_cert.pem”会验证完整证书链。“-untrusted”标志用于提供属于证书链但尚未受信任的中间证书。如果验证成功,输出为“server_cert.pem: OK”。常见错误表示缺少中间证书或证书已过期。
常见证书链问题
常见的证书链问题包括:缺少中间证书(服务器仅发送叶证书)、拼接顺序错误(叶证书必须在最前)、中间证书已过期(由于通常监控叶证书的到期时间,因此很容易漏掉)、信任库中没有包含自签名证书,以及名称不匹配(证书 SAN 与主机名不匹配)。所有这些问题都可以使用“openssl s_client -showcerts”进行诊断。
PKCS#12 捆绑包格式
PKCS#12(.pfx 或 .p12)是一种容器格式,可将私钥、终端实体证书和中间证书捆绑到单个加密文件中。创建命令为:“openssl pkcs12 -export -out bundle.pfx -inkey server_key.pem -in server_cert.pem -certfile intermediate_cert.pem”。IIS、.NET、Java 密钥库以及许多企业应用都要求使用这种格式。
PEM、DER 与 PFX 的区别
PEM 是经过 Base64 编码的 ASCII 文本,可读性强,支持在一个文件中存放多个对象,Apache、nginx 和 OpenSSL 工具都使用它。DER 是二进制格式,每个文件包含一个对象,用于 Java(导入 JKS)、Android 和某些企业工具。PKCS#12/PFX 是用于多个对象的加密二进制容器,用于 Windows 和 IIS。部署前请先确认目标系统所需的格式。
证书透明度与签发
现代 CA 必须在交付前,将所有签发的证书记录到证书透明度(CT)日志中。为内部使用创建私有 CA 时,不要求记录到 CT 日志。不过,面向公众的证书必须包含嵌入式签名证书时间戳(SCT),才能获得 Chrome 的信任。私有 CA 可以根据自身策略运行,不受 CT 要求限制。
检查证书链顺序
为 nginx 服务器组装 TLS 证书链文件时,正确的拼接顺序是什么?
课程回顾:证书链管理
根 CA 是自签名的,处于离线状态,并且只签署中间 CA。中间 CA 负责日常证书签发。证书链文件包含叶证书,后面接中间证书(不包含根证书)。使用“openssl verify -CAfile root.pem -untrusted intermediate.pem leaf.pem”进行验证。PKCS#12 捆绑包用于 Windows/Java,可将密钥和证书集中保存。链顺序错误是常见的部署失败原因,可使用 s_client -showcerts 进行诊断。
用 AI 导师学习 Cryptology Academy — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 67
- 课程
- 261
常见问题解答
「创建和管理证书链」课时是免费的吗?
是的 — 「创建和管理证书链」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cryptology Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cryptology Academy 课程共包含 4 节课。
「创建和管理证书链」这节课中我会学到什么?
生成根证书颁发机构、中间证书颁发机构和终端实体证书,并正确验证证书链。 你通过在浏览器中直接运行的动手代码来练习 Cryptology Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Cryptology Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Cryptology Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「创建和管理证书链」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Cryptology Academy 课中编写并运行代码吗?
能。每节 Cryptology Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。