使用config.cnf通过OpenSSL创建CSR时遇错误求助
问题解决:ZATCA电子发票CSR生成错误修正
错误原因分析
从报错信息来看,核心问题集中在三点:
- 配置文件使用了OpenSSL无法识别的非标准X.509字段名(如
registerAddress、SN、UID)。 - 存在哈希算法拼写错误(
default_md =sha26应为sha256)。 req段重复定义req_extensions,导致配置冲突。
修改后的config.cnf配置文件
oid_section = OIDs [OIDs] certificateTemplateName = 1.3.6.1.4.1.311.20.2 [req] default_bits = 2048 prompt = no default_md = sha256 req_extensions = req_ext distinguished_name = dn [dn] C = SA OU = Ryiad Branch O = Jarir CN = 127.0.0.1 emailAddress = faheemkurikkal.mp@gmail.com [v3_req] basicConstraints = CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment [req_ext] certificateTemplateName = ASN1:PRINTABLESTRING:ZATCA-Code-Signing subjectAltName = dirName:alt_names [alt_names] serialNumber = 1-AcmeInc|2-EGSUnit|3-123456789 userid = 310122393500003 title = 1100 streetAddress = MyAddress businessCategory = Acme Industry
关键修改点说明
- 修正哈希算法:将
sha26改为OpenSSL支持的标准哈希算法sha256。 - 清理重复配置:删除
req段中重复的req_extensions = v3_req,保留req_extensions = req_ext以指定自定义扩展段。 - 替换非标准字段:把
alt_names中的自定义字段替换为OpenSSL可识别的标准X.509属性:SN→serialNumber(对应OID 2.5.4.5,标准序列号字段)UID→userid(对应OID 0.9.2342.19200300.100.1.1,标准用户ID字段)registerAddress→streetAddress(对应OID 2.5.4.7,标准街道地址字段)
- 修正邮箱配置:将邮箱拼写错误
gmail.common改为gmail.com,并移至dn段(X.509证书主题的标准位置)。
生成CSR的命令
使用修改后的配置文件执行以下命令生成CSR:
openssl req -new -key your_private_key.key -out zatca_csr.csr -config config.cnf
注意:如果ZATCA要求使用特定自定义OID而非标准字段,请参考ZATCA官方文档获取对应OID,在OIDs段中定义后即可直接使用自定义字段名(例如:registerAddress = 1.2.3.4.5.6)。
内容的提问来源于stack exchange,提问作者FaheemMCFC
相关产品推荐
相关产品推荐

