コマンドライン経由で openssl にパスワード引数を使用して復号化する方法

コマンドライン経由で openssl にパスワード引数を使用して復号化する方法

したがって、コマンド ライン引数を介してパスワードを渡すことは、最も安全な方法ではありません。とはいえ、openssl のドキュメントでは、openssl コマンドにパスワード引数を渡す方法がわかりませんでした。

私がやろうとしていることはこれです

openssl aes-256-cbc -in some_file.enc -out some_file.unenc -d

次に、復号化のためのパスキーの入力を求められます。ファイルにパスワードをエコーせずに、単にコマンドにパスワードを渡したいだけなのか、openssl ドキュメントとインターネットを検索して答えを見つけようとしました。引用符付きと引用符なしの両方で-pass:somepasswordand を追加してみました-pass somepasswordが、効果はありませんでした。

ようやく答えが見つかり、他のフォーラムでも同様の質問が寄せられているのがわかったので、コミュニティのために質問と回答をここに投稿しようと思いました。

注: 私はopensslバージョン0.9.8yを使用しています

答え1

ドキュメントは私にとってあまり明確ではありませんでしたが、答えはありました。問題は例を見ることができないことでした。

やり方は次のとおりです:

openssl aes-256-cbc -in some_file.enc -out some_file.unenc -d -pass pass:somepassword

コマンドラインのコマンド構文の後には必ず-passスペースが続き、その後に指定するパスフレーズの種類が続くことに注意してください。つまり、pass:プレーン パスフレーズの場合は、コロンの後にスペースなしの実際のパスフレーズが続きます。

さらに、ドキュメントでは、次の操作を行うことで他のパスフレーズ ソースを提供できると指定されています。

  • env:somevar環境変数からパスワードを取得する
  • file:somepathnameファイルの最初の行からパスワードを取得するにはpathname
  • fd:numberファイル記述子番号からパスワードを取得します。
  • stdin標準入力から読み込む

この質問と回答を書いてみると、すべてが明らかになったように思えます。しかし、理解するのに確かに時間がかかりましたし、他の人も同じような時間がかかっているのを見てきました。ですから、これでその時間が短縮され、他の人もより早く回答できるようになることを願っています! :)

OpenSSL 1.0.1e では、使用するパラメータは-passinまたは です-passout。したがって、この例は次のようになります。

openssl aes-256-cbc -in some_file.enc -out some_file.unenc -d -passin pass:somepassword

答え2

この例では、両方のファイルにパスワードを設定するために-passinと を使用しました。-passout

openssl pkcs12 -in voip.p12 -out voip.pem -passin pass:123 -passout pass:321

パスワードはどこにあり123ますか321

答え3

現時点ではUbuntu 14.04 LTSにはopenssl 1.0.1f-1ubuntu2.16が付属しています。

このバージョンで使用するパラメータは-k

例:

openssl enc -aes-256-cbc -e -in some_file.unenc -out some_file.enc -k somepassword

関連情報