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

时间:2013-10-02 12:44:24

标签: openssl x509 asn.1

我一直在网上搜索几个小时,我找不到办法做到这一点。我已经能够使用以下命令创建自签名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,但它根本没有帮助......

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

1 个答案:

答案 0 :(得分:2)

您的错误出现在param abc extension name error:v3_conf.c:271:name=abc而不是[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),但此类证书不能在其他系统中使用。