6

我已经在网上搜索了几个小时,但我找不到这样做的方法。我已经能够使用这些命令创建自签名 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 上发现了这个模糊相关的话题,但它根本没有帮助......

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

4

1 回答 1

2

您的错误出现在参数 abcextension 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)但是这样的证书不能在其他系统中使用。

于 2014-11-12T16:16:29.923 回答