如何通过OpenSSL CLI在SSL证书中添加pseudonym字段?
问题原因
OpenSSL的CA组件默认仅会将标准X.509 DN字段/扩展复制到签名后的证书中,自定义的pseudonym字段不在默认允许的范围内,因此即使CSR中包含该字段,签名过程也会自动忽略它。
解决方法
要让CA识别并将pseudonym从CSR复制到证书,需修改你的CA配置文件openssl_ca.cnf,步骤如下:
1. 给自定义字段分配OID
先在配置文件开头添加OID定义——自定义字段必须有对应的OID才能被X.509体系识别,你可以使用一个私有OID(比如1.2.3.4.5.6.7,只要不与现有OID冲突即可):
oid_section = custom_oids [custom_oids] pseudonym = 1.2.3.4.5.6.7
2. 配置CA策略允许该字段
找到配置中的策略段(通常是[policy_match]或[policy_anything]),添加一行允许pseudonym字段存在:
[policy_match] # 保留原有配置项,例如: countryName = match stateOrProvinceName = match organizationName = match commonName = supplied # 新增以下配置 pseudonym = optional # optional表示字段可选,supplied表示必须提供
3. 让CA复制字段到证书
如果pseudonym是作为DN属性(非扩展字段),完成上述两步即可;如果是作为扩展字段,还需在[ca]段添加参数允许复制CSR中的扩展:
[ca] default_ca = CA_default # 新增以下配置 copy_extensions = copy # 复制所有CSR扩展,需精确控制可改为copyall或指定具体扩展
4. 重新签名CSR
修改配置后,重新执行签名命令:
openssl ca -config openssl_ca.cnf -out test.crt -infiles test.csr
验证结果
使用以下命令检查证书是否包含pseudonym字段:
openssl x509 -in test.crt -noout -text
额外提示
- 如果
pseudonym是扩展字段,需确保CSR中的扩展定义正确,同时CA配置的扩展段(如[usr_cert])要包含对应扩展的引用。 - OpenSSL 3.0+对配置语法要求更严格,需检查OID和策略配置是否存在语法错误。
内容的提问来源于stack exchange,提问作者Preeti
相关产品推荐
相关产品推荐

