
pkcs#8 暗号化キーがあります。このキーを使用して、事前にファイルの復号化を行わずにファイルに署名したいと思います。私が達成したいのは、単一のopensslコマンドを使用してすべてのプロセスを完了することです。
このような:
openssl dgst -sha256 -sign pkcs8 -inform DER -in private.key -out
sign_this.txt.signed sign.txt
このコマンドはパスワードの入力を求められ、署名が生成されます。
opensslネストされたコマンドを使用できますか?これを行う正しい方法を説明してください。
ありがとうございます。
答え1
openssl dgst -sign
with -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 ...) ...
一つの命令で考えているのか分からない。