国密证书请求文件(CSR/P10)关键字段配置技术指导如下:
一、概述
国密证书请求文件遵循 GM/T 0092-2020《基于SM2算法的证书申请语法规范》 ,定义了使用SM2密码算法的证书申请语法、证书申请信息的扩展属性和证书响应格式。证书申请由证书申请信息(含主体名称、主体公钥信息、一组可选属性集)、数字签名算法和对证书申请信息的数字签名三部分组成。
国密证书的最终格式遵循 GM/T 0015-2023《数字证书格式》 (替代GM/T 0015-2012),规定了数字证书的基本结构及各数据项内容。以下围绕这两份核心标准,梳理CSR生成时需正确配置的各类字段。
二、CSR生成前的准备工作
1. 密钥算法选择
生成CSR前,必须先确定密钥算法类型。国密证书必须使用SM2算法,在生成CSR时公钥类型应选择 SM2(部分工具或接口中称为TPM_ALG_SM2)。SM2算法使用256位密钥。
2. 工具选择
建议使用支持国密算法的专用工具,如GmSSL(OpenSSL的国密改进版)等。常用生成命令示例:
bash
# 生成SM2私钥
gmssl sm2keygen -pass <password> -out <filename>.key
# 通过私钥生成P10请求
gmssl reqgen -C CN -L 上海市 -ST 上海市 -O XXXX有限公司 -OU XXX部 -CN XXXX -key <sm2_name>.key -pass <your_password> -out p10.key
三、主体名称(Subject DN)字段填写规范
1. CN(Common Name,公共名称)
OID:2.5.4.3
格式:字符串,最大长度通常为64字符
填写规范:
SSL/TLS服务器证书:必须填写网站域名(如 `www.example.com`)或通配符域名(如 `*.example.com`)
客户端证书:填写证书申请者的姓名或设备标识
代码签名证书:填写申请单位名称
注意事项:根据国际和国密标准要求,域名验证应以Subject Alternative Name(SAN)为首选方式,CN字段已逐步被弃用,但SSL证书中仍建议同时填写CN和SAN
2. C(Country,国家)
OID:2.5.4.6
格式:2个大写字母
填写规范:严格限制为2个大写字母的国家代码。正确示例:中国填写`CN`;错误示例:`China`、`CHN`
3. ST(State/Province,省份/自治州)
OID:2.5.4.8
格式:字符串
填写规范:填写申请单位所在省、自治区或直辖市的全称,如`上海市`、`北京市`
4. L(Locality,城市)
OID:2.5.4.7
格式:字符串
填写规范:填写申请单位所在城市的官方名称,如`上海市`
5. O(Organization,组织名称)
OID:2.5.4.10
格式:字符串,最大长度通常为64字符
填写规范:填写申请单位的工商注册全称,需与营业执照保持一致
6. OU(Organizational Unit,部门名称)
OID:2.5.4.11
格式:字符串
填写规范:填写申请单位内部的具体部门名称,如`技术部`、`XXX部`,为可选项
7. E(Email,电子邮件地址)
OID:1.2.840.113549.1.9.1
格式:标准电子邮件地址
填写规范:用于证书申请相关的联系邮箱,为可选项
完整DN示例
C=CN, ST=上海市, L=上海市, O=XX科技有限公司, OU=技术部, CN=www.example.com
四、证书扩展项(Extensions)配置规范
证书扩展项是GM/T 0015-2023中的核心内容,由扩展标识符(OID)、关键度(TRUE/FALSE)和扩展值三部分组成。
1. KeyUsage(密钥用法)
OID:2.5.29.15
关键性:如果标记为关键,证书必须严格用于指定用途
填写规范:
证书类型 应标记的KeyUsage
签名证书 digitalSignature(数字签名)、nonRepudiation(防抵赖)
加密证书 keyEncipherment(密钥加密)、dataEncipherment(数据加密)、keyAgreement(密钥协商)
CA证书 keyCertSign(证书签名)、cRLSign(CRL签名)
特别说明(双证书体系) :国密体系采用“双证书”机制——每张国密SSL证书实际上由两张证书组成:签名证书和加密证书。两者的区别正是看证书内KeyUsage扩展字段的取值。在生成CSR前,应明确本次申请的是签名证书还是加密证书,并据此配置对应的KeyUsage。
2. Extended KeyUsage(扩展密钥用法)
OID:2.5.29.37
填写规范:若存在EKU,其用途不能与KeyUsage扩展项中的定义发生冲突
常见EKU用途:
服务器身份验证(serverAuth,OID:1.3.6.1.5.5.7.3.1)
客户端身份验证(clientAuth,OID:1.3.6.1.5.5.7.3.2)
代码签名(codeSigning,OID:1.3.6.1.5.5.7.3.3)
3. Subject Alternative Name(SAN,主体可选名称)
OID:2.5.29.17
关键性:通常为非关键扩展
填写规范:
对于SSL/TLS证书,SAN是 必须包含的重要扩展
SAN中必须包含CN字段中的域名或IP地址
可写入多个域名、电子邮件地址、IP地址等信息
支持通配符域名
4. Authority Key Identifier(颁发机构密钥标识符)
OID:2.5.29.35
关键性:标记为非关键
填写规范:除自签名证书外,所有证书应包含此扩展。keyIdentifier应从公钥推导,例如使用SM3杂凑值
5. Subject Key Identifier(主体密钥标识符)
OID:2.5.29.14
填写规范:证书中应存在这一扩展,其值与证书使用者的公钥计算结果一致
6. Basic Constraints(基本限制)
OID:2.5.29.19
填写规范:
终端实体证书:cA字段应为FALSE
CA证书:cA字段应为TRUE,可选的pathLenConstraint限制证书路径长度
7. CRL Distribution Points(CRL发布点)
OID:2.5.29.31
填写规范:必须存在此扩展,以便从指定的URL下载证书撤销列表CRL
8. Authority Info Access(AIA,授权信息访问)
OID:1.3.6.1.5.5.7.1.1
填写规范:提供证书签发者信息访问网址,用于获取签发者证书以验证用户证书,必须确保AIA网址可正常访问,且只能是HTTP方式访问,不能是HTTPS
五、算法与OID标识规范
核心OID标识
根据GB/T 33560-2017《信息安全技术 密码应用标识规范》,关键OID如下:
算法/标识 OID
SM2签名算法(SM3WithSM2Encryption) 1.2.156.10197.1.501
SM2加密方案 1.2.156.10197.1.301
SM3杂凑算法 1.2.156.10197.1.401
签名算法配置
使用SM2算法时,AlgorithmIdentifier的parameters字段 必须缺失(MUST be absent) 。
CSR格式说明
虽然PKCS#10(P10请求)格式本身不直接包含OID配置功能,但在申请过程中需要配置签名算法为SM3withSM2(OID 1.2.156.10197.1.501),以便CA正确识别和处理证书申请。
六、特殊配置与注意事项
1. GM/T 0092-2020附加属性
根据GM/T 0092-2020,证书申请信息中包含一组可选属性集,包括对challengePassword、certificationRequestInfo等对象的OID定义。申请时可按需配置相关属性。
2. 编码规则
国密证书遵循GB/T 16262.1的DER编码规则进行编码。特别注意证书有效期编码规则:2049年及之前使用UTCTime(YYMMDDHHMMSSZ格式),2050年及之后使用GeneralizedTime(YYYYMMDDHHMMSSZ格式)。
3. 证书链完整性
申请证书时,CA机构通常会返回以下文件:
签名证书(根据CSR申请的证书)
加密证书(国密双证书体系中的加密证书)
加密私钥
上级根证书和中级CA证书(用于证书链构建)
应确保将这些文件完整配置到服务端,形成一个完整的信任链,以支持国密SSL/TLS的安全通信。
七、常见问题与检查清单
检查项 规范要求
密钥算法 必须为SM2(256位),不得使用RSA或ECC
国家代码(C) 2个大写字母,中国填写CN
CN字段 SSL证书必须填写完整域名
SAN字段 SSL证书必须包含,且包含CN中的域名
KeyUsage 签名证书:digitalSignature+nonRepudiation;加密证书:keyEncipherment+dataEncipherment+keyAgreement
签名算法标识 SM3WithSM2,parameters字段必须为空
编码格式 DER编码
报告效期编码 严格遵循UTC/GMT格式规范
CRL/AIA 必须包含可访问的CRL发布点和AIA信息
以上配置规范基于GM/T 0092-2020、GM/T 0015-2023及相关国密标准编制,实际操作时应以CA机构的具体要求和最新版国家标准为准。如需各标准PDF完整原文,可访问国家密码管理局官网(www.oscca.gov.cn)或密码行业标准化技术委员会官网(www.gmbz.org.cn)下载。