生成CSR时OpenSSL req命令报OBJ_create:oid exists错误
解决OpenSSL生成CSR时的OID重复定义错误
嘿,这个错误我之前也碰到过!你遇到的OBJ_create:oid exists问题,核心原因很简单:你在配置里手动声明的2.5.4.97这个OID,已经是OpenSSL内置的标准OID了,根本不需要你重新定义。
问题根源拆解
2.5.4.97对应的是标准属性organizationIdentifier(组织标识符),OpenSSL的默认对象数据库里早就收录了这个OID。当你在[OIDs]段尝试重新创建它时,就会触发“OID已存在”的冲突报错。而你改成1.2.3.4能成功,是因为这个是未被注册的私有OID,OpenSSL里没有预定义,所以可以正常创建。
修正后的配置方案
你有两种简单的修复方式:
方案1:直接使用标准属性名
既然OpenSSL已经认识这个OID,直接在[dn]段用标准属性名organizationIdentifier即可,完全不需要[OIDs]段的声明:
[ req ] distinguished_name = dn prompt = no [ dn ] O=Enable Banking Oy L=Espoo C=FI organizationIdentifier=PSDFI-FINFSA-29884997 CN=enablebanking.com
方案2:给内置OID起别名
如果你习惯用自己的OrganizationID作为属性名,可以在[OIDs]段把它映射到已存在的标准OID,而不是重新定义OID值:
oid_section = OIDs [ req ] distinguished_name = dn prompt = no [ OIDs ] OrganizationID=organizationIdentifier [ dn ] O=Enable Banking Oy L=Espoo C=FI OrganizationID=PSDFI-FINFSA-29884997 CN=enablebanking.com
验证方法
你可以用这个命令确认2.5.4.97确实是内置OID:
openssl oid -v 2.5.4.97
运行后会显示类似这样的输出,证明它已经被OpenSSL预定义了:
2.5.4.97: 'organizationIdentifier'
用修正后的配置再执行你的生成命令:
openssl req -new -config eidas.conf -keyout eidas.key -out eidas.csr
这次应该就能成功生成CSR和密钥了。
内容的提问来源于stack exchange,提问作者giorgiAsanidze
相关产品推荐
相关产品推荐

