国密SM2 CSR(PKCS#10)关键字段填写规范指南
依据 GM/T 0015-2023《SM2数字证书格式》、GM/T 0092《证书申请语法规范》、GM/T 0043 证书互操作规范 整理,覆盖DN主体字段、扩展字段、双证书区分、密评合规要求、GmSSL实操模板。
一、基础前置强制规则(不满足直接被CA驳回、密评不通过)
1. 算法硬性约束
私钥:SM2(曲线sm2p256v1),禁止RSA/ECC国际曲线
CSR签名摘要:SM3,禁止SHA256/SHA1
签名算法OID:`1.2.156.10197.1.501`(sm2-with-sm3)
生成命令必须携带参数:`-sm3 -sigopt ec_param_enc:named_curve`
2. 私钥主权合规
密评/等保三级场景禁止平台一键生成CSR,必须本地GmSSL生成,私钥PKCS#8加密存储,不提交CA、不上传第三方平台。
3. 文件标准
CSR为标准PKCS#10 PEM格式,仅上传CSR文本,私钥本地离线保管。
4. SM2 UserID固定规则
SM2签名计算Z值默认UserID:`1234567812345678`;全链路必须统一,前后端、CA、加密机保持一致,否则验签失败。
二、DN可分辨名称(Distinguished Name)必填/可选字段完整规范
DN结构顺序固定:`C > ST > L > O > OU > CN`,字段禁止中文、特殊符号(* # " / \ &),全部使用英文/拼音。
字段标识 名称 必填性 标准填写规范 合规示例 错误示范
C Country 国家代码 强制必填 仅两位大写字母,中国固定`CN`,不允许CHN/China CN China、ZH、中国
ST State/Province 省份 强制必填 省份完整拼音,无简写,不带省字 Guangdong、Beijing GD、BJ、广东省
L Locality 城市 强制必填 城市完整拼音 Shenzhen、Haidian SZ、海淀
O Organization 机构全称 强制必填 营业执照完整英文译名,有限公司统一`LTD.`,事业单位`INSTITUTE` China Telecom Co.,LTD. 电信、测试公司
OU Organizational Unit 部门 推荐必填(密评强制) 业务/安全/IT部门,多部门用逗号分隔 Information Security Dept 运维、IT部(中文)
CN Common Name 通用名 强制必填 分场景严格区分 见下方分场景细则 | www*、IP、中文域名
emailAddress 联系邮箱 可选 机构安全运维邮箱 sec@company.com 个人私人邮箱
CN(Common Name)分场景填写细则(国密核心易错点)
1. 网站/服务端HTTPS证书(单域名/泛域名)
单域名:主业务域名 `api.xxx.com`
泛域名:`*.xxx.com`
关键:CN仅填1个主域名,所有域名/IP必须写入SAN扩展,现代浏览器只校验SAN,CN仅做兼容
2. 设备/硬件加密机证书
CN填设备唯一SN编号:`HSM-20260701-001`
3. 个人客户端/操作员证书
CN填实名拼音:`Zhang San`,不可填账号ID
4. 机构根CA/二级CA证书
CN填机构完整名称:`China Commercial CA`
三、关键扩展字段规范(v3_req,国密CSR必须配置)
扩展通过`gmssl.conf`的`req_extensions = v3_req`加载,缺失会导致证书无权限、TLS握手失败、密评扣分。
1. subjectAltName(SAN 主题备用名称,网站证书强制)
用途:承载多域名、内网IP、泛域名,RFC2818强制校验项
格式规范:
[v3_req]
subjectAltName = @alt_names
[alt_names]
DNS.1 = www.xxx.com
DNS.2 = api.xxx.com
DNS.3 = *.inner.xxx.com
IP.1 = 192.168.1.10
IP.2 = 10.0.0.5
域名前缀`DNS.x`,IP前缀`IP.x`,序号连续从1开始
内网IP、公网域名、泛域名全部写入,不可遗漏
客户端身份证书(操作员/APP)可省略SAN
2. keyUsage(密钥用途,国密双证书核心区分)
国密标准分**签名证书、加密证书**两套CSR,keyUsage完全不同,不可混用:
(1)SM2签名证书(签名/验签、TLS握手签名)
keyUsage = digitalSignature, nonRepudiation
国密专用扩展OID,标记SM2签名用途
1.2.156.10197.1.301 = ASN1:NULL
(2)SM2加密证书(密钥协商、数据加解密)
keyUsage = keyEncipherment, dataEncipherment, keyAgreement
1.2.156.10197.1.301 = ASN1:NULL
3. basicConstraints
服务端/终端证书固定:`basicConstraints = CA:FALSE`
自建二级CA根证书:`basicConstraints = CA:TRUE, pathlen:0`
4. privateKeyUsagePeriod(可选,密评推荐)
限定私钥有效周期,格式UTC时间:
`privateKeyUsagePeriod = 20260701000000Z/20270701000000Z`
四、国密双证书CSR填写差异(金融/政务必看)
国密TLS双向认证要求同一主体生成2套CSR,DN主体信息完全一致,仅CN后缀、keyUsage区分:
1. 签名证书CSR
CN:`api.company.com-SIGN`
keyUsage:digitalSignature, nonRepudiation
2. 加密证书CSR
CN:`api.company.com-ENC`
keyUsage:keyEncipherment, keyAgreement
> 禁止两套CSR DN信息不一致,CA会判定主体不匹配,签发失败。
五、字段字符编码与禁止规则(高频驳回原因)
1. 字符集:仅允许ASCII英文、数字、横杠`-`、点`.`、逗号`,`;严禁中文、全角符号、星号、引号、斜杠、括号、空格首尾
错误示例:`OU=信息安全部`、`O=XX科技(北京)有限公司`
修正:`OU=Information Security`、`O=XX Technology (Beijing) Co.,LTD.`
2. 长度限制
C:固定2字符
ST/L/O/OU:≤64字符
CN:≤64字符(泛域名、长域名放SAN,不要塞CN)
3. 禁止空字段
C/ST/L/O/CN不允许留空,CA表单、GmSSL交互生成时必须完整填写。
4. Challenge Password(挑战密码)
CSR生成时的密码字段**留空不填写,无业务用途,填写无意义。
六、合规配置文件完整模板(gmssl-san.conf,生产标准)
ini
[req]
default_md = sm3
distinguished_name = req_distinguished_name
req_extensions = v3_req
prompt = no
[req_distinguished_name]
C = CN
ST = Shanghai
L = Pudong
O = National Tech Security Co.,LTD.
OU = R&D & Security Dept
CN = api.secure-system.com
[v3_req]
basicConstraints = CA:FALSE
keyUsage = digitalSignature, nonRepudiation
国密SM2专用OID标识
1.2.156.10197.1.301 = ASN1:NULL
subjectAltName = @alt_names
[alt_names]
DNS.1 = api.secure-system.com
DNS.2 = admin.secure-system.com
DNS.3 = *.inner.secure-system.com
IP.1 = 10.1.0.20
IP.2 = 120.92.xxx.xxx
生成CSR标准命令
bash
1. 生成SM2签名私钥(PKCS8加密)
gmssl sm2 -genkey -out sign.key
2. 生成带完整扩展的国密CSR
gmssl req -new -key sign.key -out server_sign.csr -config gmssl-san.conf -sm3 -sigopt ec_param_enc:named_curve
七、密评/等保专项填写要求
1. O机构名称必须与营业执照英文译名完全一致,CA会核验工商信息,不一致直接拒签;
2. OU必须标注安全/密码相关部门(Security/Crypto Dept),无OU密评扣分项;
3. 必须携带SM2专用OID扩展`1.2.156.10197.1.301`,证明CSR为国密算法生成;
4. 网站业务强制配置SAN扩展,仅CN无SAN属于不合规;
5. 双证书场景必须分开生成两套独立CSR,密钥用途严格隔离,禁止一证两用。
八、校验CSR字段是否合规命令
bash
完整打印CSR DN、扩展、算法信息
gmssl req -in server_sign.csr -text -noout
校验签名算法是否为sm2-with-sm3
gmssl req -in server_sign.csr -verify
九、常见填写错误与后果
1. CN填中文/内网IP,无SAN → 浏览器证书域名告警、TLS握手失败
2. CSR使用SHA256而非SM3 → 国密CA拒绝签发,密评不通过
3. 缺少SM2专用OID扩展 → 判定为国际算法证书,不符合商密改造要求
4. 签名/加密证书keyUsage混用 → 加密机、国密网关验签/加密报错
5. DN字段含中文、特殊符号 → CA表单校验直接驳回
6. 私钥由云平台生成CSR → 私钥第三方托管,等保三级、密评不通过