OpenSSLは便利ですが
どうも使い方が分かりにくいと思うことがあります。
前提
とりあえずこんな感じで秘密鍵と公開鍵を作ったとしましょう。
openssl genrsa 2048 > private.pem
openssl rsa -pubout < private.pem > public.pem
たぶん普通のやり方(でもちょっと変?)
sample.txtを署名して検証するならこんな感じでしょう。
openssl dgst -sha256 -sign private.pem sample.txt > sample.sig
openssl dgst -sha256 -verify public.pem -signature sample.sig sample.txt
でもdgstで署名までするの?!という気もします。
ダイジェストを作ってからpkeyutlで署名
ダイジェストを作るだけならこんな感じで
openssl dgst -sha256 -binary sample.txt > sample.dgst
それを使って署名するならこうです。
openssl pkeyutl -sign -inkey private.pem -pkeyopt digest:sha256 < sample.dgst > sample.sig
余談(rsautlで署名)
rsautlにも-signがありますがハッシュアルゴリズムを渡す方法が見つかりません。