gpt4 book ai didi

OpenSSL:无法获取本地颁发者证书

转载 作者:行者123 更新时间:2023-12-03 14:49:18 31 4
gpt4 key购买 nike

我有一个证书 C.pfx,它被授予我使用 OpenSSL。证书 C.pfx 具有以下证书路径:C->B->A

我使用以下命令将 C.pfx 转换为 PEM:
openssl pkcs12 -in C.pfx -out C.pem -nodes -- 工作正常

我在文件编辑器中打开了证书 C.pem,发现它同时具有 RSA PRIVATE KEY 和 CERTIFICATE 部分。

我还看到在 Windows XP 的 Trusted Roor Certification Athorities 商店下安装了 A 和 B 证书。

目标是使用 OpenSSL for Windows 版本 1.0.1c(目前是最新版本)对测试文件进行签名、加密、解密和验证

我使用以下命令:

- 签署 -

openssl smime -sign -signer C.pem -in test.txt -out test.tmp    -- WORKS OK

--加密--
openssl smime -encrypt -in test.tmp -out test.enc C.pem     -- WORKS OK

--解密--
openssl smime -decrypt -in test.enc -recip C.pem -inkey C.pem -out test1.tmp    -- WORKS OK

- 核实 -
openssl smime -verify -in test1.tmp -CAfile "C.pem" -out notes1.txt -- FAILS

我使用 MMC 控制台将 B 和 A 证书导出到 CER 文件,然后使用 OpenSSL 将它们转换为 PEM。之后,我尝试了以下 2:
openssl smime -verify -in test1.tmp -CAfile "A.pem" -out notes1.txt -- FAILS

openssl smime -verify -in test1.tmp -CAfile "B.pem" -out notes1.txt -- FAILS

所有 3 次验证尝试均失败,并出现以下错误:
Verification failure
3672:error:21075075:PKCS7 routines:PKCS7_verify:certificate verify error:.\crypt
o\pkcs7\pk7_smime.c:342:Verify error:unable to get local issuer certificate

我究竟做错了什么?

最佳答案

当您使用 openssl smime verify openssl 尝试通过检查其签名(即证书中的签名,而不是您要求验证的签名消息中的签名)来验证它要使用的证书是否受信任。为此,它必须拥有颁发证书的 CA key 的证书副本。
-CAfile参数用于传递包含该 CA 证书的文件的名称,而不是用于签署消息的 key 的证书。您可以使用 -certfile 指定用于签署消息的 key 的证书。参数...但在您的情况下,证书将位于 test.tmp文件(您可以通过在签名消息时指定 -nocerts 来禁止它)。

要在验证消息时禁止检查 key 证书,您可以提供 -noverify验证命令的参数(尽管 openssl smime verify -noverify 看起来有点奇怪)。

关于OpenSSL:无法获取本地颁发者证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12790572/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com