我正在尝试验证签名,但收到“无法加载密钥文件”的提示。这是一台 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*