2017-06-21 124 views
0

我想为正在测试的项目设置证书链。如何制作不依赖根证书的证书链

这将有根证书,那么证书A,然后证书B等

目前,随着IM如何设置它,如果我没有根证书,证书B就不会是有效的。我如何拥有它,证书B不依赖于根证书。

这是我一直在使用的openSSL命令。

创建根证书私钥: openssl genrsa -out ca.key 4096

创建根证书:openssl req -new -x509 -days 1826 -key ca.key -out ca.crt

创建证书私钥:openssl genrsa -out ia.key 4096

创建证书请求:openssl req -new -key ia.key -out ia.csr

创建和注册证书A到根:openssl x509 -req -days 730 -in ia.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out ia.crt

对于证书B我做同样的事情(但更改课程的名称并签名到证书A而不是根目录)。

但是,如果我没有证书A或根,那么证书B将无法正常工作。我怎样才能使证书B不依赖于根证书或证书A?

+0

您的问题尚不清楚。你想问如何验证没有根证书的证书链?或者生成没有根的证书? – pedrofb

+0

我想弄清楚如何验证没有根证书的证书@pedrofb –

+0

我不确定如果我正确理解问题,请检查答案 – pedrofb

回答

0

证书使用父证书的私钥签名。要验证数字签名,您需要父证书的公钥。因此,您无法验证没有根的证书链

通常,必须验证证书的客户端系统具有包含已接受证书颁发机构根证书的信任库。还有一个证书用于拥有包含指向父证书的URL的特殊属性

+0

让我重新解释一下。在我的电脑上,可以说我创建了多个证书。我有一个根,一个中间证书和一个证书。如果我的电脑没有根证书。如果我将证书或中间证书发送给其他人,则证书显示该证书无效。有没有一种方法可以防止这种情况,而不是手动给他们提供根证书文件,例如将两个证书合并在一起 –

+0

预计您将手动提供根证书给另一方。认证链可以包含所有必要的证书(例如以PEM格式),但通常不包含根,并且通过其他方式分发。这可以防止客户端自动信任证书。客户端必须拥有一个拥有其实际信任的根证书的信任库,因此您描述的行为是预期的行为 – pedrofb