使用公共证书验证签名

时间:2014-04-16 00:30:18

标签: openssl digital-signature

我正在研究使用OpenSSL签名然后验证消息签名的想法。我已经找到了签名部分,但我仍然无法验证相同的签名。

假设我在一个名为plaintext.txt的文件中有一些明文。我在signature.txt中有明文签名。此明文使用私有RSA密钥签名。我有证书,其中包含与该私钥一起使用的公钥。我相信有一个OpenSSL命令可以让我在不提取公钥的情况下验证该签名是一个单独的步骤。这是我正在尝试的:

  

openssl sha1 -verify -inkey cert.pem -certin -signature signature.txt plaintext

但我在命令行上收到此错误:

  

无需验证签名:使用-signature选项

1 个答案:

答案 0 :(得分:3)

假设您已将PEM编码的X.509签名证书存储在文件" signer.cer"和你的PEM编码存储在文件" signer.key"中的PKCS#1私钥。

您可以使用OpenSSL命令行实用程序对文件" plaintext.txt"进行签名。并将存储在PEM编码的PKCS#7结构中的签名输出到文件" signature.p7s":

openssl smime -sign -binary -in plaintext.txt -signer signer.cer -inkey signer.key -outform PEM -out signature.p7s

您可以使用以下命令验证签名:

openssl smime -verify -binary -inform PEM -in signature.p7s -content plaintext.txt -certfile signer.cer -nointern -noverify > /dev/null

如果您使用的是Windows,则只需将/dev/null替换为nul

有关各个选项的详细信息,请参阅OpenSSL SMIME module manual