pkcs8と組み合わせたdgstを使用して署名する方法

pkcs8と組み合わせたdgstを使用して署名する方法

pkcs#8 暗号化キーがあります。このキーを使用して、事前にファイルの復号化を行わずにファイルに署名したいと思います。私が達成したいのは、単一のopensslコマンドを使用してすべてのプロセスを完了することです。

このような:

openssl dgst -sha256 -sign pkcs8 -inform DER -in private.key -out 
sign_this.txt.signed sign.txt

このコマンドはパスワードの入力を求められ、署名が生成されます。

opensslネストされたコマンドを使用できますか?これを行う正しい方法を説明してください。

ありがとうございます。

ベストアンサー1

openssl dgst -signwith -keyform der(not -inform)は明示的な秘密鍵のみを受け入れます。ただし、このコマンドは、既存のプレーンテキストまたは暗号化、pkcs8プレーンテキストまたは暗号化など、4つのPEM形式すべての秘密鍵を受け入れることができます。もちろん、暗号化キーを使用するにはパスワードを入力する必要があります。 「あらかじめ復号しない」がこれを除外するわけではありません。

コマンドライン操作はpkcs8 rsa pkey単に復号化してから再暗号化することで、暗号化された秘密鍵をDERからPEMに変換します(両方ともパスワードが必要です)、次のように直接実行できます。

 printf '%s\n' "-----BEGIN ENCRYPTED PRIVATE KEY-----" >tempkey.pem
 openssl base64 <pk8derfile >>tempkey.pem
 printf '%s\n' "-----END ENCRYPTED PRIVATE KEY-----" >>tempkey.pem
 # variants with sed, awk, perl, etc are possible if better for you 
 # and of course change filename(s) if you like

 openssl dgst -sha256 -sign tempkey.pem <data -out signature 

Unixの一部のシェル(特にbash)では、次の方法で一度にこれを行うことができます。

 openssl dgst -sha256 -sign <(printf ... base64 ... printf ...) ...

一つの命令で考えているのか分からない。

おすすめ記事