如何从Zatca提供的CSR提取完整config.cnf配置数据
解决Zatca CSR配置缺失问题的实操步骤
1. 从官方CSR提取完整配置细节
用OpenSSL命令解码官方CSR,导出所有关键字段与扩展项,这是补全config.cnf的核心依据:
openssl req -in zatca-official.csr -noout -text
重点核对Zatca强制要求的内容:
- 主体DN字段:必须包含
countryName=SA、匹配注册信息的stateOrProvinceName、localityName、organizationName、commonName(需对应Zatca注册的实体ID) - 扩展项:
basicConstraints:固定为CA:FALSEkeyUsage:需包含digitalSignature, keyEnciphermentsubjectAltName:若官方CSR存在,需同步URI:或DNS:格式的实体标识- Zatca自定义OID扩展:注意是否存在类似
1.2.3.4.5.6.7.8.1这类专属标识扩展
2. 排查自身config.cnf的缺失项
将解码出的官方CSR信息和你的config.cnf逐项对比,重点检查:
- 是否遗漏Zatca专属的自定义OID扩展
- 主体DN的每个字段是否和官方CSR完全一致(大小写、拼写、格式均不能错)
- keyUsage和basicConstraints的配置是否严格匹配官方要求
3. 生成符合规范的config.cnf模板
基于Zatca要求,替换为你提取的实际值即可使用:
[req] default_bits = 2048 prompt = no default_md = sha256 distinguished_name = dn req_extensions = req_ext [dn] C = SA ST = Riyadh # 替换为官方CSR中的省份 L = Riyadh # 替换为官方CSR中的城市 O = YourOfficialCompanyName # 替换为官方CSR中的企业名称 CN = YourZatcaEntityID # 替换为Zatca注册的实体ID [req_ext] basicConstraints = CA:FALSE keyUsage = digitalSignature, keyEncipherment subjectAltName = URI:urn:zatca:ein:your-entity-id # 官方CSR包含则保留 # 添加Zatca自定义扩展,示例: 1.2.3.4.5.6.7.8.1 = ASN1:UTF8String:YourZatcaRegistrationCode
4. 验证新生成的CSR
生成新CSR后,再次解码确认与官方CSR完全一致:
openssl req -new -key your-private.key -out new-csr.csr -config config.cnf openssl req -in new-csr.csr -noout -text
确认无误后再提交Zatca进行QR验证。
内容的提问来源于stack exchange,提问作者Codinoz Technologies
相关产品推荐
相关产品推荐

