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

Pet*_*etr 5 openssl asn.1 x509

我已经在网上搜索了几个小时,但找不到解决方法。我已经能够使用以下命令创建自签名CA证书:

openssl genrsa -out ca.key 1024
openssl req -new -x509 -extensions v3_ca -key ca.key -out ca.crt -days 3650
Run Code Online (Sandbox Code Playgroud)

现在,我想创建新证书并用我的CA对其进行签名。在新证书中,我想拥有自己的扩展名-我们可以将其称为“ abc”,以使其具有整数值“ 1”。我尝试了以下命令:

openssl req -new -nodes -newkey rsa -extensions abc -keyout mycert.key -out mycsr.csr -days 365 -config ./openssl.cnf
Run Code Online (Sandbox Code Playgroud)

使用openssl.cnf仅包括以下内容的文件时:

[ abc ]

abc = ASN1:INTEGER:1
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

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
Run Code Online (Sandbox Code Playgroud)

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

似乎是什么问题?我该如何纠正自己?任何想法表示赞赏。

Ale*_*lyi 2

您的错误位于参数 abcextension name error:v3_conf.c:271:name=abc而不是 [abc] 部分。 如果您在配置中看到类似这样的内容,则无法编写 ,这意味着关键字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),但这样的证书不能在其他系统中使用。abc = ...policyConstraints = ...