web-dev-qa-db-ja.com

OpenSSLを使用した署名検証

OpenSSLとOpenSSHを試していましたが、RSAキーペアを使用して署名および検証できませんでした。

私は次のことをしました

生成されたキーペア:

$ ssh-genkey -b 2048 -t rsa <key-name>

次に、次の方法でメッセージダイジェストを作成しました。

$ openssl sha1 -sign <key-name> -out rsasign.bin ~/tmp/test.txt

対応する公開鍵を使用して署名を検証しようとしました。

$ openssl sha1 -verify <key-name>.pub -signature rsasign.bin ~/tmp/test.txt

残念ながら、これを試行するとエラーが返されます。

unable to load key file

誰かが私がしていることに何か問題を見ることができますか?

ありがとう!

2
Daeden

まず、ssh-keygenではなくssh-genkeyを意味していると仮定します(また、私のバージョンでは、コマンドラインではなくインタラクティブにパスを指定する必要がありますが、出力は同じです)。 :)

問題は、OpenSSLがSSHとは異なる形式を公開鍵に使用することです。 SSHで生成されたキーは引き続き使用できますが、OpenSSLが理解できる形式で公開キーを取得する必要があります。これは、次のコマンドで実行できます。

openssl rsa -in <key-name> -pubout -out public-key.pem

ここで、public-key.pemは作成する新しいファイルです。これを実行すると、言及した検証コマンドが正常に実行され、テストファイルに対してVerified OKのみが出力されました。

上記のコマンドには、公開鍵ではなくprivate鍵が必要であることに注意してください。次のコマンドを実行して、SSHスタイルの公開鍵をOpenSSLスタイルの公開鍵に変換できます。

ssh-keygen -f <key-name>.pub -e -m public-key.pem

ここで、public-key.pemは、作成する新しいファイルです。

2
Calrion