OpenSSL を使用して署名と署名を検証する基本的な演習を実行しようとしています。署名は正常に機能します
$ openssl pkeyutl -hexdump -sign -inkey id_rsa -in test.txt > test.sig
Enter pass phrase for id_rsa:
$ cat test.sig
0000 - 20 ab 34 00 ff 87 50 1e-de fb c9 3d 10 2f 7b fd .4...P....=./{.
0010 - 99 a1 61 e0 3d 5f 93 82-63 e9 0a 6f 1a 22 4f 04 ..a.=_..c..o."O.
etc...
ただし、その署名を検証しようとすると、エラーが発生します。
$ openssl pkeyutl -verify -pubin -inkey id_rsa.pub.pem -signature test.sig test.txt
unable to load Public Key
使用しようとしている公開鍵は、PEM 形式に変換された SSH 公開鍵です。
-----BEGIN RSA PUBLIC KEY-----
MIICCAKCAf8wxsGr3b/rR/BsRqRMBaKPEGATYhSNaqnThcx9YdA7jHcj1dK7Utmo
nXZz7WwB0W1vzADZpzX96UUX5OIn1iByZ3ZQZpkO6YApMYxo/oHyiBYiCyEhbqKR
TydzmXFGYJ6UtLBFLD1eKfJokhiqdRa1kVMdAd6nBT5JiNb0ADO3VisyPwQZpqyB
Izbq1643JT2PC1BYk1cqqxyTnY/kAEEQvcQwrd0y7p29slRHC6g77HToWJLzNdAj
b2rjkRIfMzDx0LwmCuEqh+9XfVYQFJyrqXTrcgQlKBQhTSneSnn/9SpqYs4ziOIR
4djO9BbhGb/09LSb31NFy6S99rXsElI2aSaaGz5y6/6wyYq+zMxmiS//iCV/heNv
i3PH+D2hxOdz+VEvAJ77x4cMOn3ovVW73aWoBsNP8c9ISKt6MSXClljskA1WFcYJ
9UuBicQ/FGL2j96lzQ2NZZrYru0gAOkj3WUF/z5ORGC7iRvgOc89oqUxKNG+N/RN
jrMbCBAN8hOlJCW0e7/MoangYtBtZ52ZSIxYACRRfKTUlKdjsE9UVYrqBtTeVDGp
Igb+0kuBD61XF6IpnHEX0OZeArL7FY1trDJ85lUU09qNbnlnxNAY2Qo3cZiXSRBW
ROBUxz0OzF2Gvj30BEiY1rshH+XtM5ViQo1nK+YkBQcrCbwfnCFBAgMBAAE=
-----END RSA PUBLIC KEY-----
コマンドで生成された
ssh-keygen -f key.pub -e -m pem
この問題について私が読んだ議論とドキュメントに基づいて、それはうまくいくはずです。しかし、そうではありません。
ヒントはありますか?
編集:変換されたSSHキーではなく、OpenSSLで生成されたキーのペアで同じプロセスを試しました。エラーを生成するのではなく、黙って失敗するだけです(署名を検証するのではなく、使用法に関する情報openssl
が得られます)。pkeyutl
編集 2 : バイナリ署名を使用すると (省略-hexdump
)、OpenSSL で生成されたキーに同じ効果があります。変換された RSA キーでは、
unable to load Public Key
Error initializing context
[snip usage output]