openssl: 電子署名と検証


前提


ドキュメント


電子署名: openssl dgstコマンド

平文サイズに制約がない。

署名

openssl dgst -sign private-key.pem -sha256 -out abc.sig abc.txt

検証

openssl dgst -verify public-key.pem -sha256 -signature abc.sig abc.txt
Verified OK

電子署名: openssl pkeyutlコマンド

平文サイズ等に制約があり、アルゴリズムにより異なる。RSAなら鍵長より多少小さい平文まで。

署名

# 101バイト(808ビット)の平文作成
head --bytes 101 /etc/services > abc.txt
# 署名
openssl pkeyutl -sign -in abc.txt -inkey private-key.pem -out abc.sig

検証だけ

openssl pkeyutl -verify -in abc.txt -sigfile abc.sig -pubin -inkey public-key.pem
Signature Verified Successfully

検証と復号(平文復活)

openssl pkeyutl -verifyrecover -in abc.sig -pubin -inkey public-key.pem