こんにちは、キーペアを生成し、秘密キーを使用して署名を生成しました。
openssl rsautl -sign -in helloworld.txt -inkey aa.pem -out sig
ただし、公開鍵で署名を確認できません。
openssl rsautl -verify -in helloworld.txt -inkey aa.pub -sigfile sig
-sigfileは非推奨です。また、openssl.orgのオンラインドキュメントの一部が間違っています。
公開鍵で署名を検証するために使用するコマンドは何ですか?
私はあなたの問題に対する2つの解決策を見つけました。
Rsautlをそのように使用できます:(秘密鍵:my.keyおよび公開鍵my-pub.pemを使用)
$ openssl rsautl -sign -inkey my.key -out in.txt.rsa -in in.txt
Enter pass phrase for my.key:
$ openssl rsautl -verify -inkey my-pub.pem -in in.txt.rsa -pubin
Bonjour
この方法では、すべてのドキュメントが署名ファイル内に含まれ、最終コマンドによって出力されます。
しかし、私の場合、私の証明書には次のように書かれています:署名アルゴリズム:sha1WithRSAEncryption。したがって、4つのステップで文書に署名する標準的な方法を使用することをお勧めします。
OpenSSLはこれを2つのステップで行います。
$ openssl dgst -sha256 -sign my.key -out in.txt.sha256 in.txt
Enter pass phrase for my.key:
$ openssl dgst -sha256 -verify my-pub.pem -signature in.txt.sha256 in.txt
Verified OK
この方法では、受信者に2つのドキュメントを送信しました。元のファイルプレーンテキスト、署名ファイル署名済みダイジェスト。注意:署名ファイルにはドキュメント全体が含まれていません!ダイジェストのみ。
あなたの方法は基本的に正しいです。見逃しているのは、rsutlに「-pubin」を追加して、inutキーファイルファイルが公開キーであることを伝えることです。 「-pubin」OpenSSL rsautl文書は正確ではありません。「-pubin入力ファイルはRSA公開鍵です。」は「-pubin入力鍵ファイルはRSA公開鍵です。」入力ファイルは署名である必要があるためファイル。
公開キーを使用して確認する
echo "plop" > "helloworld.txt"
openssl rsautl -sign -in hello.txt -inkey private.pem -out sig
openssl rsautl -verify -in sig -inkey public.pem -pubin
> plop
ドキュメントで rsautl を確認できます
あなたの例では、これは次のようになります:
openssl rsautl -verify -in sig -inkey aa.pem
以下に完全な履歴をコピーしました。
echo "plop" > "helloworld.txt"
openssl rsautl -sign -in helloworld.txt -inkey aa.pem -out sig
openssl rsautl -verify -in sig -inkey aa.pem
> plop