无法验证签名(openssl)

无法验证签名(openssl)

我正在尝试验证签名,但收到“无法加载密钥文件”的提示。这是一台 CentOS 服务器,OpenSSL 版本为 1.0.2(2015 年 1 月 22 日)。

密钥生成如下:

ssh-keygen -t rsa -f serverkey -N '' -b 2048
mv serverkey serverkey-priv.pem
ssh-keygen -f serverkey.pub -e -m pem > serverkey-pub.pem ; rm -f serverkey.pub

其结果是服务器密钥-priv.pem&服务器密钥-pub.pem

我如下签名:

openssl dgst -sha256 -sign serverkey-priv.pem -out message.sig message.txt

message.sig 文件生成成功。到目前为止一切顺利。

但是,当我尝试使用刚刚生成的 sig 文件验证消息时:

openssl dgst -sha256 -verify serverkey-pub.pem -signature message.sig message.txt

我得到了“无法加载密钥文件。

我究竟做错了什么?

答案1

当我使用时,输出会有很大不同

openssl rsa -in serverkey-priv.pem -pubout -out serverkey-pub.pem

比当我使用

ssh-keygen -f serverkey.pub -e -m pem > serverkey-pub.pem

创建的公钥文件openssl rsa -pubout确实成功验证了该消息。看来 ssh-keygen 的-m pem公钥文件格式与openssl预期不兼容。事实上,使用该命令读取公钥信息openssl rsa -text需要-RSAPublicKey_in,而这似乎不是 支持的选项dgst

答案2

ssh-keygen 应该生成公钥和私钥。

检查一下:

ls -l serverkey*

相关内容