开场钩子
很多人用 XCA 创建 CA,只能做到 “看起来差不多”。
但证书链真正关键的,不只是生成一张根证书,而是要让:
根 CA 结构一致;
子证书层级一致;
密钥用途一致;
扩展属性一致;
签名算法和版本信息一致;
CRL、OCSP 等字段配置一致。
这一集,我们用 XCA 还原一套与目标证书链一致的证书结构。
第一部分:先分析目标证书链
在生成之前,先做证书分析。重点看以下几项:
1. 证书链层级
确认是:
根 CA → 子证书;
还是根 CA → 中间 CA → 终端证书。
层级不同,生成逻辑就不同。
2. 版本与序列号
查看证书版本、序列号生成规则。
3. 签名算法
例如:
SHA256withRSA;
SHA384withRSA;
或其他算法。
算法不一致,证书链校验结果会不同。
4. 密钥用途
确认证书是用于:
密钥签名;
证书签名;
CRL 签名;
代码签名;
或其他扩展用途。
5. 扩展字段
例如:
BasicConstraints;
KeyUsage;
ExtendedKeyUsage;
SubjectKeyIdentifier;
AuthorityKeyIdentifier;
CRL Distribution Points;
Authority Information Access。
第二部分:用 XCA 创建根 CA
1. 新建数据库
打开 XCA,创建新的数据库或项目文件。
2. 生成根 CA 密钥对
选择密钥算法和密钥长度。
3. 创建根证书
配置根 CA 信息:
名称;
组织信息;
有效期;
签名算法;
基本约束;
密钥用途。
根 CA 必须具备证书签名能力。
第三部分:创建子证书或中间 CA
根据目标证书链结构,决定子证书类型。
如果目标是二级结构
直接创建:
根 CA;
子证书。
如果目标是三级结构
创建:
根 CA;
中间 CA;
终端证书。
配置重点
子证书必须匹配:
签发者信息;
公钥类型;
签名算法;
密钥用途;
扩展属性;
有效期策略。
第四部分:配置扩展字段
这是证书链是否一致的关键。
1. BasicConstraints
控制证书是否为 CA,以及路径长度限制。
2. KeyUsage
控制证书用途,例如:
证书签名;
CRL 签名;
数字签名;
密钥加密。
3. ExtendedKeyUsage
进一步限制应用场景,例如:
代码签名;
文档签名;
服务器身份验证;
客户端身份验证。
4. CRL Distribution Points
指定 CRL 吊销列表地址。
5. Authority Information Access
指定 OCSP 等访问信息。
第五部分:签发与导出证书
1. 子证书申请
在 XCA 中创建证书申请。
2. 使用根 CA 签发
用根 CA 私钥对子证书进行签名。
3. 导出证书
导出:
根 CA 证书;
子证书;
或证书链文件。
4. 验证结构
检查:
签发者是否匹配;
链层级是否正确;
扩展字段是否一致;
证书是否可被目标结构验证。
结尾总结
用 XCA 创建 “一模一样” 的证书链,核心不是简单生成两张证书,而是统一以下维度:
证书链层级;
版本与签名算法;
密钥用途;
扩展属性;
CRL 和 OCSP 配置;
签发关系与验证路径。
只有这些字段对齐,证书链才算真正一致。