国密证书的CSR生成,核心在于算法的正确选择(必须使用SM2)和信息的准确填写。下面为你详细拆解其中的注意事项与操作要点。
一、核心算法选择:为什么必须是SM2?
国密证书的算法体系是强制且固定的,不能选择RSA或ECC(椭圆曲线密码学)。
非对称加密算法:SM2:这是国密证书的必选且唯一的算法。它基于椭圆曲线密码体系,用于数字签名和密钥交换。在生成CSR时,密钥算法必须明确指定为SM2,密钥长度固定为256位。
哈希算法:SM3:用于生成消息摘要,确保数据完整性。在生成CSR的命令中,摘要算法参数应指定为 `-sm3`。
对称加密算法:SM4:用于实际的数据加密传输。此算法在CSR生成阶段不涉及,主要在服务器配置时使用。
二、CSR生成前的准备与核心注意事项
在生成CSR前,有几个关键点需要特别留意:
1. 选择正确的工具
GmSSL:一个开源的国密算法工具箱,是生成SM2密钥和CSR的首选命令行工具。
CA机构专用工具:许多CA机构(如CFCA、天威诚信等)会提供自己的客户端或网页工具,用于简化CSR生成过程。
支持国密的OpenSSL:OpenSSL 1.1.1及以上版本开始支持SM2算法。但在使用时,请务必确认你的版本和编译选项已包含国密支持。
2. 国密证书的“双证书”特性
国密SSL协议通常使用双证书体系:一张签名证书和一张加密证书。
生成方式一(推荐):生成一对CSR和私钥。签名证书和加密证书共用这一对密钥。这种方式管理简单,也是很多CA机构的默认或推荐做法。
生成方式二:分别为签名证书和加密证书生成两套独立的CSR和私钥。这种方式安全性更高,但密钥管理更复杂。
建议:在生成前,先向你选择的CA机构确认他们的具体要求。
3. 填写准确无误的证书信息
CSR中包含的`subject`信息必须与你的官方资料完全一致:
C (Country):国家代码,固定为 `CN`。
ST (State/Province):省/自治区。
L (Locality):城市。
O (Organization):公司法定全称。
OU (Organizational Unit):部门名称(可选)。
CN (Common Name):最关键**的字段,必须填写你要绑定的确切域名。对于泛域名证书,格式为 `*.example.com`。
注意:所有信息,尤其是组织名,必须与营业执照上的信息完全一致。如需填写中文,请确保工具或系统使用UTF-8编码。
4. 私钥安全是生命线
立即备份:生成的私钥(`.key`文件)是证书的核心,一旦丢失无法恢复。
安全保存:将私钥保存在安全、离线的地方,并设置强密码保护。
谨慎传递:永远不要将私钥发给任何人,包括CA机构。你只需提交CSR文件。
三、CSR生成操作示例(使用GmSSL/OpenSSL)
以下是在命令行环境中生成CSR的典型步骤:
步骤1:生成SM2私钥
bash
使用 OpenSSL
openssl ecparam -genkey -name SM2 -out server.key
步骤2:生成证书签名请求 (CSR)
bash
使用 OpenSSL,通过 -subj 参数一次性填写所有信息
openssl req -new -sm3 -key server.key -out server.csr -subj "/C=CN/ST=Beijing/L=Beijing/O=Example Corp/OU=IT Dept/CN=www.example.com"
执行后,你会得到两个文件:
`server.key`:私钥文件,请务必妥善保管,绝对不要公开。
`server.csr`:CSR文件,这是需要提交给CA机构的文件。
四、在线生成 vs. 自行生成:如何选择?
特性 在线生成 CSR (CA平台提供) 自行生成 CSR (使用 GmSSL/OpenSSL)
私钥管理 由平台生成和管理 完全由你本地生成和管理
安全性 私钥由第三方保管,存在理论风险 私钥从不出境,安全性最高
便捷性 操作简单,无需安装任何工具 需要一定的命令行操作经验
控制权 控制权在平台 控制权完全在你手中
适用场景 对便捷性要求高,信任平台安全性的场景 对安全合规有高要求的生产环境
总结
总的来说,生成国密证书的CSR可以遵循以下要点:
1. 算法是固定的:必须使用 SM2(非对称)和 SM3(哈希)。
2. 工具要选对:优先使用 GmSSL 或 支持国密的OpenSSL。
3. 信息要填准:CSR中的组织信息和域名必须准确无误。
4. 私钥要管好:这是你的核心资产,务必安全备份,切勿外传。
5. 方式可自选:追求最高安全性的生产环境,建议自行生成CSR;追求便捷,可选择CA平台的在线生成功能。