【问题标题】:OpenSSL: Create a self-signed CA with many intermediate certificate levelsOpenSSL:创建具有许多中间证书级别的自签名 CA
【发布时间】:2019-12-09 11:55:53
【问题描述】:

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

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

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

是否可以使用 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 一样使用根 CA 验证 Company_1 中间体?

【问题讨论】:

    标签: ssl openssl certificate verification multi-level


    【解决方案1】:

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

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

    【讨论】:

    • 正如我在帖子中所说,如果我使用中间链和 leaf.pem(在我的情况下为company_1.cert.pem),openssl 验证工作正常。在我的例子中,链是通过合并 ca-chain.cert.pem 和 app_1.cert.pem 创建的文件。我无法使用 app_1.cert.pem 验证此 company_1.cert.pem。只用链验证就够了吗?在 app_1.cert.pem 的情况下,使用 ca.cert.pem 和 ca-chain.pem 的验证都可以。
    • @LostInTheEcho:我现在用你的文件名来说明这一点。您需要使用-partial_chain 的答案并没有改变。
    • 好的,谢谢。之前我有点困惑,因为你写的是chain.pem是你需要验证的-CAfile。我现在明白你的意思了。谢谢,我试试看。
    猜你喜欢
    • 2016-01-22
    • 2018-12-28
    • 2012-08-29
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-30
    • 1970-01-01
    相关资源
    最近更新 更多