したがって、コマンド ライン引数を介してパスワードを渡すことは、最も安全な方法ではありません。とはいえ、openssl のドキュメントでは、openssl コマンドにパスワード引数を渡す方法がわかりませんでした。
私がやろうとしていることはこれです
openssl aes-256-cbc -in some_file.enc -out some_file.unenc -d
次に、復号化のためのパスキーの入力を求められます。ファイルにパスワードをエコーせずに、単にコマンドにパスワードを渡したいだけなのか、openssl ドキュメントとインターネットを検索して答えを見つけようとしました。引用符付きと引用符なしの両方で-pass:somepassword
and を追加してみました-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