EJBCA 终端证书模板设置说明文档
本指南用于解释 EJBCA 中终端证书模板(Certificate Profile)设置项的具体含义及推荐用途,适用于 HTTPS/Web/设备/客户端等常见终端证书签发需求。
基本信息
| 配置项 | 描述 |
|---|---|
| Certificate Profile ID | 模板在数据库中的唯一标识,仅供系统内部识别 |
| 类型 | 可用终端实体,子CA,根CA |
| Available Key Algorithms | 可用密钥算法,如 RSA、ECDSA、Ed25519、国密算法(如 DILITHIUM)等 |
| Available ECDSA curves | ECDSA 可选曲线,当前未启用任何曲线 |
| 可用位长度 | 支持的密钥位数(针对 RSA),如 2048、4096 等 |
| 签名算法 | 用于签发证书时的签名哈希算法,如 SHA3-256withRSA |
| Alternative Signature | 是否启用替代签名算法,如 ECDSA, EdDSA 等 |
| 有效期 or end date of the certificate | 默认有效期,如 “2y” 表示 2 年 |
| Validity Offset | 签发日期的偏移量,允许向前或向后设定起始时间 |
| Expiration Restrictions | 限制最大到期时间,用于合规控制 |
| Profile Description | 证书模板说明,用于备注用途(如“终端设备证书”) |
权限控制(Permissions)
| 配置项 | 描述 | 推荐设置 |
|---|---|---|
| Allow Validity Override | 允许在签发证书时覆盖默认有效期 | |
| Allow Expired Validity End Date | 允许设置一个已过期的结束时间(用于测试或审计) | |
| Allow Extension Override | 允许 CSR 中的扩展字段覆盖模板中预定义的扩展 | |
| Allow certificate serial number override | 允许在签发时自定义证书序列号 | |
| Allow Subject DN Override by CSR | 允许 CSR 中的主题信息(如 CN/O)覆盖模板配置 | |
| Allow Subject DN Override by End Entity Information | 允许通过终端实体信息(用户输入)指定 Subject 字段 | |
| Allow Key Usage Override | 允许 CSR 中设置 keyUsage 字段覆盖模板配置 | |
| Allow Backdated Revocation | 允许将吊销时间设置为历史时间,用于追溯性撤销 | |
| Use Certificate Storage | 启用证书在数据库中存储(必须开启,除非特殊离线用途) | |
| Store Certificate Data | 存储证书完整原文数据(配合 OCSP/CRL 使用) |
建议:在生产环境中保持模板统一性,除非明确需要,否则尽量关闭 Override 类权限项,避免 CSR/End Entity 越权操作。
X.509v3 扩展 - 基础信息
| 扩展项 | 描述 | 推荐设置 |
|---|---|---|
| 基本约束(Basic Constraints) | 限制是否为 CA 证书(终端证书应设为 FALSE) | |
| CA密钥标识符 | 标识签发 CA 的信息 | |
| 主题密钥标识符 | 生成此证书的唯一标识 |
X.509v3 扩展 - 密钥用途(Key Usage)
| 项目 | 描述 |
|---|---|
| 数字签名 (digitalSignature) | 用于验证签名,如身份认证、代码签名 |
| 不可抵赖 (nonRepudiation) | 表明签名不可否认(法律场景) |
| 数据加密 (dataEncipherment) | 用于加密非密钥数据 |
| 密钥加密 (keyEncipherment) | 用于加密密钥材料,如对称密钥 |
| 密钥协议 (keyAgreement) | 支持密钥协商协议(如 DH) |
| CRL签名 (cRLSign) | 用于签署吊销列表(CA 用) |
| 密钥证书签名 (keyCertSign) | 用于签署证书(CA 用) |
| 只用于加密 (encipherOnly) | 与密钥协议联合使用(仅加密) |
| 只用于解密 (decipherOnly) | 与密钥协议联合使用(仅解密) |
| Forbid encryption usage for ECC keys | 禁止 ECC 密钥用于加密 |
X.509v3 扩展 - 扩展密钥用途(Extended Key Usage)
| 扩展用途 | 描述 |
|---|---|
| TLS client | 用于客户端 TLS 认证 |
| TLS server | 用于服务器 TLS 认证 |
| EAP over LAN (EAPOL) | 企业网身份认证 |
| EAP over PPP | 点对点协议身份认证 |
| ETSI TSL Signing | 用于 ETSI TSL 签名场景 |
| ICAO Deviation List Signing | ICAO 签名用途之一 |
| ICAO Master List Signing | ICAO 主列表签名 |
| Intel AMT management | Intel 管理认证专用 |
| Internet Key Exchange for IPsec | IPsec 密钥交换 |
| Kerberos Client Authentication | Kerberos 客户端认证 |
| Kerberos KDC | Kerberos 密钥中心 |
| MS CA Key Exchange | Microsoft CA 密钥交换用途 |
| MS Commercial Code Signing | Microsoft 商业代码签名 |
| MS Document Signing | Microsoft 文档签名 |
| MS EFS Recovery | Microsoft EFS 恢复用途 |
| MS Encrypted File System | Microsoft 加密文件系统用途 |
| MS Individual Code Signing | Microsoft 个人代码签名 |
| MS 智能卡登录 | Microsoft 智能卡登录验证 |
| OCSP 签发者 | 在线证书状态协议(OCSP)签名证书用途 |
| PDF Signing | 用于 PDF 文件签名 |
| PIV Card Authentication | PIV 卡身份认证 |
| RFC9336 Document Signing | 符合 RFC9336 的文档签名用途 |
| SCVP Client | 简化证书验证协议客户端 |
| SCVP Server | 简化证书验证协议服务端 |
| SIP Domain | 用于 VoIP/SIP 域名认证用途 |
| SSH Client | 用于 SSH 客户端认证 |
| SSH Server | 用于 SSH 服务器认证 |
| 代码签名 (codeSigning) | 用于软件/驱动程序签名 |
| 任意扩展的密钥用途 | 任意通用用途扩展支持 |
| 安全 Email (emailProtection) | S/MIME 邮件签名/加密用途 |
| 客户身份验证 (clientAuth) | 用于 TLS 客户端身份认证 |
| 时间戳 (timeStamping) | 时间戳服务签名用途 |
| 服务器验证 (serverAuth) | 用于服务器身份验证(HTTPS 等) |
名称扩展
| 项目 | 描述 | 建议 |
|---|---|---|
| 主题别名(Subject Alt Name) | 支持 IP/DNS/UEmail 作为证书标识 | |
| Issuer Alternative Name | 可添加额外的 CA 名称信息 | 可选 |
| Name Constraints | 限定主题中可用的命名空间 | 可选(高安全场景使用) |
验证扩展(Validation Data)
| 项目 | 描述 | 推荐 |
|---|---|---|
| CRL 发布点 | 证书吊销列表地址 | |
| Delta CRL(Freshest CRL) | 增量吊销列表 | 按需开启 |
| Authority Information Access (AIA) | 提供 OCSP/CA 信息 |
私钥使用期限制
| 项目 | 描述 |
|---|---|
| Start Offset | 私钥可用的起始偏移时间 |
| Period Length | 私钥的可使用周期(独立于证书有效期) |
ETSI 合规扩展(一般用于合规性要求高的 PKI 环境)
| 项目 | 描述 |
|---|---|
| 资质证书声明 | 用于标识法律或合规用途证书 |
| Assured validity | 确保短期证书的有效性 |
其他扩展(Other Extensions)
| 扩展 | 用途 |
|---|---|
| OCSP No Check | 禁用 OCSP 检查(通常仅对 OCSP responder 有用) |
| Microsoft 模板值 | 用于 Windows AD 集成的特殊扩展 |
| CA/B Forum OID | 用于 CA/B 合规的组织标识扩展 |
审批设置 & 附加字段
| 配置项 | 说明 |
|---|---|
| 添加/编辑终端实体 | 绑定的审批流程(如 sub CA) |
| 密钥恢复 | 是否支持密钥找回(如用于备份恢复) |
| 撤销审批 | 吊销时是否需审批 |
| CN 后缀 | 在 Subject CN 后自动添加字符串 |
| 主题字段子集限制 | 限制允许使用的 Subject 字段 |
CA & 发布设置
| 项目 | 说明 |
|---|---|
| 可用的 CA | 允许哪些 CA 使用此证书模板 |
| 发布器(Publisher) | 可配置发布至 LDAP、数据库或外部服务 |
| 单证书限制 | 是否启用一个 End Entity 只能有一张有效证书 |
| Account Binding Namespace | 用于设备账户绑定场景(如 IoT) |
如需继续配置 “代码签名证书” 模板,请在此基础上调整 keyUsage 与 extendedKeyUsage 字段即可。
建议对不同应用(如:VPN、HTTPS、代码签名、客户端认证)创建不同模板,便于管理和合规控制。
代码签名证书模板设置指南(EJBCA)
本章节用于配置适用于软件、固件、驱动签名的 代码签名证书(Code Signing Certificate)模板。该模板推荐在 EJBCA 中单独创建,以确保签发出的证书用途清晰、用途受限、兼容常见签名工具(如 Microsoft signtool、GPG、jarsigner 等)。
基础配置建议
| 配置项 | 推荐值 | 说明 |
|---|---|---|
| 类型 | 终端证书 | 终端证书 |
| 可用密钥算法 | RSA(2048 或 4096)/ Ed25519 | 主流签名工具对 RSA 支持最好;部分支持 EdDSA |
| 签名算法 | SHA256withRSA / SHA3-256withRSA | 建议使用 SHA256 或以上哈希算法 |
| 有效期 | 1y 或 2y | 代码签名证书有效期建议不超过 3 年 |
权限控制推荐(Permissions)
| 项目 | 建议 | 说明 |
|---|---|---|
| Allow Validity Override | 防止用户更改有效期 | |
| Allow Extension Override | 保证模板一致性 | |
| Allow Subject DN Override by CSR | 支持自动化请求中的 DN 设定 | |
| Allow Key Usage Override | 限定用途为签名,不可更改 | |
| Use Certificate Storage / Store Certificate Data | 保证支持 CRL/OCSP 查询和日志审计 |
Key Usage 设置(密钥用途)
启用以下选项并设置为“关键”:
digitalSignature
nonRepudiation
禁用其他所有选项。
nonRepudiation 用于法律上增强签名不可否认性。
Extended Key Usage(扩展密钥用途)
仅启用以下项并标记为关键:
codeSigning
禁用其他项(如 serverAuth、clientAuth、emailProtection 等)以限制用途。
Subject DN 建议字段
| 字段 | 示例值 | 说明 |
|---|---|---|
| CN | Huawei Software Signer 01 | 通常用于标识签名主体 |
| O | Huawei Technologies | 公司名 |
| C | CN | 国家码 |
安全建议
- 该模板不应被 CA 或管理员直接使用,应通过审批流程控制发放
- 建议将此模板绑定至
代码签名使用者角色,并使用 RA 审批或管理员审批方式颁发 - 对签发出的证书可启用 CRL 发布、AIA 访问、吊销审批等审计机制
配置完成后,即可用于:
- Windows
.exe/.dll/.msi等签名 - Java
.jar/.apk签名 - Linux 内核模块签名
- Git 代码提交签名(搭配 GPG 证书)
如需进一步扩展用途(如时间戳服务器、PDF 签名),建议创建专门模板以分离风险。