Command line 用于验证签名的openssl命令行
嗨,我已经生成了一个密钥对,并使用私钥生成了一个签名Command line 用于验证签名的openssl命令行,command-line,ubuntu,openssl,digital-signature,Command Line,Ubuntu,Openssl,Digital Signature,嗨,我已经生成了一个密钥对,并使用私钥生成了一个签名 openssl rsautl -sign -in helloworld.txt -inkey aa.pem -out sig 但是,我无法使用公钥验证签名: openssl rsautl -verify -in helloworld.txt -inkey aa.pub -sigfile sig 我知道有-sigfile已被弃用。而且openssl.org上的一些在线文档是错误的 我应该使用什么命令来验证带有公钥的sig?您可以检查文档中的
openssl rsautl -sign -in helloworld.txt -inkey aa.pem -out sig
但是,我无法使用公钥验证签名:
openssl rsautl -verify -in helloworld.txt -inkey aa.pub -sigfile sig
我知道有-sigfile已被弃用。而且openssl.org上的一些在线文档是错误的
我应该使用什么命令来验证带有公钥的sig?您可以检查文档中的
在您的示例中,这将给出:
openssl rsautl -verify -in sig -inkey aa.pem
我已在下面复制了我的全部历史记录:
echo "plop" > "helloworld.txt"
openssl rsautl -sign -in helloworld.txt -inkey aa.pem -out sig
openssl rsautl -verify -in sig -inkey aa.pem
> plop
我找到了两种解决你问题的方法 您可以这样使用rsautl:(使用私钥:my.key和公钥my pub.pem) 使用此方法,所有文档都包含在签名文件中,并由最终命令输出 但在我的例子中,我的证书上写着:签名算法:sha1withrsa加密。 因此,我建议您分4步使用签署文档的标准方法:(此方法用于所有不对称电子签名,以避免对签名文件和/或CPU使用收取过高费用)
$ openssl dgst -sha256 -sign my.key -out in.txt.sha256 in.txt
Enter pass phrase for my.key:
$ openssl dgst -sha256 -verify my-pub.pem -signature in.txt.sha256 in.txt
Verified OK
使用此方法,您向收件人发送了两个文档:原始文件纯文本,签名文件签名摘要。注意:签名文件不包括整个文件!只有摘要。你的方法基本上是正确的。您错过的是通过添加“-pubin”告诉rsautl inut密钥文件是一个公钥。 “-pubin”OpenSSL rsautl文档项不准确 " -普宾 输入文件是RSA公钥。 " 应该是 " -普宾 输入密钥文件是RSA公钥。 "
因为输入文件应该是签名文件。请使用公钥验证
echo "plop" > "helloworld.txt"
openssl rsautl -sign -in hello.txt -inkey private.pem -out sig
openssl rsautl -verify -in sig -inkey public.pem -pubin
> plop
您好,谢谢,我确实阅读了手册,但我需要使用公钥进行验证。不是私钥。使用-pubin并将公钥作为参数传递给-inkey您的方法是正确的,我缺少摘要部分,正在尝试对整个文档进行签名!谢谢你的帮助!我还发现了一些有用的链接,我用它来做X.509CA的事情:当使用这个命令行来验证给定数据的签名时,我得到以下错误输出:
验证失败\n dgst中的错误
这是否意味着验证失败是因为错误还是因为文件不正确匹配?签名解码失败没有真正的原因,所以我想说不匹配。您知道签名的格式是否重要吗?我认为格式.sign
没有得到处理。你应该仔细看看文档。签名文件是文本文件,扩展名并不重要。是的,文件的内容有一个格式,但是如果不看它,我就不能说它是否合适。首先用我放在这里的命令和一个随机文本文件测试它,它应该可以工作,然后测试您自己的文件。
echo "plop" > "helloworld.txt"
openssl rsautl -sign -in hello.txt -inkey private.pem -out sig
openssl rsautl -verify -in sig -inkey public.pem -pubin
> plop