OpenSSL PKCS7_NOCHAIN标志的验证过程是怎样的?

问题描述 投票:0回答:1

我对OpenSSL验证标志PKCS7_NOCHAIN的含义感到困惑。根据定义,它说:"如果PKCS7_NOCHAIN被设置,那么消息中包含的证书就不会被用作不受信任的CA。

如果PKCS7_NOCHAIN被设置,那么消息中包含的证书就不会被用作不受信任的CA。这意味着整个验证链(除了签名者的证书)必须包含在可信存储中。

"消息中包含的证书不被用作不受信任的CA "和 "整个验证链必须包含在受信任的存储中" 。

通常情况下,验证会走过验证发行人根ca证书的链条。PKCS7_NOCHAIN标志有什么变化?

根据这里的文档,好像是指示OpenSSL信任证书颁发者,而不是验证走链的颁发者。https:/www.php.netmanualenopenssl.pkcs7.flags.php

openssl certificate ca
1个回答
0
投票

一条消息由单个签名者的证书签名,但可能包含多个证书。典型的情况是,当签名者的证书由中间人签发,并由可信存储中的一个根证书签名时,就会发生这种情况。

典型的验证过程如下。

  1. 在邮件所附的证书中找到签名者的证书。验证它(检查目的、检查前不检查、检查后不检查等)。

  2. 在可信存储中或附件证书中找到签发人的证书。验证证书并验证签名者证书的签名。

  3. 对发行人的发行人做同样的工作,以此类推,直到达到自签证书。

  4. 终止的自签证书必须在可信存储中。

选项 PKCS7_NOCHAIN 修改步骤2和步骤3:在可信存储中搜索中间证书。只是. 附带的证书可忽略不计。

证明:功能 PKCS7_verify文件pk7_smime.c,第272行。如果标志 PKCS7_NOCHAIN 未设置,则将消息中的证书添加为 chain 在呼吁 X509_STORE_CTX_init.

可信的证书存储被设置为 商店,要验证的终端实体证书被设置为x509,并将一组附加证书(将是不可信的,但可能用于建立链)在 链条.

如果 PKCS7_NOCHAIN 设为,则 chain 的论点 X509_STORE_CTX_initNULL - 忽略附加在消息上的证书。

© www.soinside.com 2019 - 2024. All rights reserved.