OpenSSL:创建具有许多中间证书级别的自签名 CA

OpenSSL: Create a self-signed CA with many intermediate certificate levels

我想构建自己的自签名 CA 结构以在我的应用程序中使用。思路如下图所示:

所以,总而言之,我想要一个具有多个中间证书级别的 CA。

例如,我想创建一个根 CA 来签署我的所有应用程序,然后为我的第一个应用程序创建一个中间证书 APP_1。这个应用程序被几家公司使用,所以我希望每家公司都有自己的由 APP_1 签署的中间证书(你可以把这个中间证书想象成 APP_1 的 "child"证书)。公司中间证书然后签署最终用户在他的设备上使用的证书。

是否可以使用 OpenSSL 创建此证书层次结构方案?

我已经尝试创建此方案的示例,并且在我尝试验证 Company_1 中间证书之前一切顺利。与链的验证成功,但与创建此证书的中间证书的验证失败。失败的命令是这个:

openssl verify -CAfile /CA/app_1/certs/app_1.cert.pem /CA/app_1/company_1/certs/company_1.cert.pem 

错误如下:

error 2 at 1 depth lookup: unable to get issuer certificate
error /CA/app_1/company_1/certs/company_1.cert.pem: verification failed

我做错了什么?我是否也应该像使用 APP_1 一样使用 Root CA 验证 Company_1 中间体?

openssl verify 默认要构建完整的链。但是您只提供叶证书和链证书,而不提供根证书(由自己签名)。要接受链证书而不是根证书作为最终信任锚,请使用 -partial_chain 选项:

$ openssl verify -partial_chain  -CAfile app_1.cert.pem company_1.cert.pem