1

我正在尝试通过 SSH 连接到我大学的服务器以进行 OpenSSL 分配。我有我的自签名证书aasignedcert.pem、签名的私钥aaprivatekey.pem和我的明文test.txt

我首先使用以下命令签署了我的消息以创建我的testsigned.txt文件:

openssl smime -sign -signer aasignedcert.pem -in test.txt -inkey aaprivatekey.pem > testsigned.txt

然后,加密文件以制作testsigned.txt.enc

openssl smime -encrypt -in testsigned.txt -aes128 aasignedcert.pem > test.txt.enc

为了确保一切正常,我解密了该文件并将其存储在testsigned.dec.txt

openssl smime -decrypt -aes128 -in test.txt.enc -inkey aaprivatekey.pem > test.dec.txt

解密后的文件确实有原始明文。最后,我尝试使用我签署的证书来验证它:

openssl smime -verify -in test.dec.txt -CAfile aasignedcert.pem -certfile aasignedcert.pem

但是,这不起作用。即使摆弄参数,我也始终收到此错误消息:

Verification failure 139814549997256:error:21075075:PKCS7 routines:PKCS7_verify:certificate verify error:pk7_smime.c:342:Verify error:unable to get local issuer certificate

我无法弄清楚我做错了什么。有人有想法吗?

4

2 回答 2

2

您是如何创建 aasignedcert.pem 的?也许您使用您创建的本地 CA 对其进行了自签名?如果是这种情况,我相信您需要将CA 的证书传递给 -CAfile 参数。

openssl smime -verify -in test.dec.txt -CAfile [CA 证书] -certfile aasignedcert.pem

于 2013-02-21T05:05:48.913 回答
0

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

于 2018-01-16T09:08:54.227 回答