如何使用OpenSSL生成包括通用(任意)扩展的证书请求?

我一直在网上搜索几个小时,我找不到办法做到这一点.我已经能够使用以下命令创建自签名CA证书:

openssl genrsa -out ca.key 1024
openssl req -new -x509 -extensions v3_ca -key ca.key -out ca.crt -days 3650

现在我想创建新证书并与我的CA签名.在新证书中,我希望拥有自己的扩展名 – 我们可以将其称为“abc”,以使整数值为“1”.我尝试了以下命令:

openssl req -new -nodes -newkey rsa -extensions abc -keyout mycert.key -out mycsr.csr -days 365 -config ./openssl.cnf

使用openssl.cnf文件时只包括:

[ abc ]

abc = ASN1:INTEGER:1

我得到以下错误

Error Loading extension section abc
3073632456:error:0D06407A:asn1 encoding routines:a2d_ASN1_OBJECT:first num too large:a_object.c:109:
3073632456:error:22074073:X509 V3 routines:V3_GENERIC_EXTENSION:extension name error:v3_conf.c:271:name=abc

我在SO上找到了this模糊相关的topis,但它根本没有帮助……

什么似乎是问题?我怎样才能纠正自己?任何想法都赞赏.

最佳答案 您的错误在param abc扩展名中错误:v3_conf.c:271:name = abc not section [abc].

你不能写abc = …

如果你在配置中看到类似这个policyConstraints = …

这意味着关键字policyConstraints有自己的OID(2.5.29.36见
http://www.oid-info.com/get/2.5.29.36)并且它在库中预编译.

那么你可以做什么

1.尝试找到适合您的现有OID并写入而不是abc.

2.定义您自己的OID(只需替换1.2.3.4而不是abc),但此类证书不能在其他系统中使用.

点赞