使用OpenSSL生成CSR时无法获取版本3的问题咨询
关于生成版本3 CSR的问题解答
CSR是否支持版本3?
支持。CSR遵循PKCS#10标准,版本3的核心特性是允许携带扩展字段(版本1不支持扩展),目前主流CA均兼容版本3的CSR。
你的操作问题
配置文件中仅针对证书生成(-x509参数场景)设置了x509_extensions = v3_req,但未为CSR生成指定对应的扩展关联。导致OpenSSL生成CSR时未加载扩展,因此保持默认的版本1;而生成证书时因为配置了x509_extensions,携带了扩展,所以自动使用版本3。
修复步骤
- 修改配置文件:在
[req]段添加req_extensions = v3_req,让CSR生成时加载扩展配置:
[ req ] prompt = no encrypt_key = no default_bits = 2048 distinguished_name = req_distinguished_name req_extensions = v3_req # 新增:指定CSR使用的扩展段 x509_extensions = v3_req # 保留:用于生成证书的扩展段 [ req_distinguished_name ] commonName = 434C800000012A [ v3_req ] keyUsage = critical, digitalSignature basicConstraints = CA:FALSE
- 重新生成CSR:执行命令(可省略
-reqexts v3_req,因为配置已指定):
openssl req -new -key private.pem -out certificateRequest.pem -config x509Version3.cnf
- 验证版本:执行以下命令查看CSR详情,确认版本为3:
openssl req -in certificateRequest.pem -text -noout
输出中会显示Version: 3 (0x2),同时可见Extensions字段,说明版本3的CSR生成成功。
补充说明
部分旧版OpenSSL可能需要通过扩展触发版本升级,只要CSR包含合法扩展,新版OpenSSL会自动将版本升级为3。提交前建议确认目标CA是否接受版本3的CSR(绝大多数主流CA都支持)。
内容的提问来源于stack exchange,提问作者neoSmith
相关产品推荐
相关产品推荐

