您好,我已经生成了密钥对并使用私钥生成签名。
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 的一些在线文档是错误的。
我应该使用什么命令来用我的公钥验证签名?
我找到了解决你问题的两种方法。
您可以这样使用 rsautl:(使用私钥:my.key 和公钥 my-pub.pem)
$ openssl rsautl -sign -inkey my.key -out in.txt.rsa -in in.txt
Enter pass phrase for my.key:
$ openssl rsautl -verify -inkey my-pub.pem -in in.txt.rsa -pubin
Bonjour
通过这种方法,所有文档都包含在签名文件中,并由最终命令输出。
但就我而言,我的证书显示:签名算法:sha1WithRSAEncryption。
因此,我建议您使用分 4 步签署文档的标准方法:(此方法用于所有非对称电子签名,以免过多收取签名文件和/或 CPU 使用率)
- 创建要签名的文档摘要(sender)
- 用私钥签署摘要(sender)
- 创建文档摘要以进行验证(接受者)
- 使用公钥验证签名(接受者)
OpenSSL 分两步完成此操作:
$ 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
使用此方法,您向收件人发送了两个文档:原始文件纯文本、签名文件签名摘要。注意:签名文件不包含整个文档!只有摘要。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)