Linux

無法驗證簽名(openssl)

  • January 10, 2017

我正在嘗試驗證簽名,但得到“無法載入密鑰文件”。這是具有 OpenSSL 版本 1.0.2(2015 年 1 月 22 日)的 CentOS 伺服器。

密鑰是這樣生成的:

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

這導致serverkey-priv.pem & serverkey-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

我得到“無法載入密鑰文件。

我究竟做錯了什麼?

我使用時得到明顯不同的輸出

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.

引用自:https://serverfault.com/questions/825392