web-dev-qa-db-ja.com

復号化のためにopensslするためにコマンドラインでパスワード引数を使用する方法

そのため、コマンドライン引数を使用してパスワードを渡すのが最も安全な方法ではありません。そうは言っても、opensslのドキュメントでは、opensslコマンドにパスワード引数を渡す方法について混乱していました。

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

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

これにより、復号化用のパスキーの入力を求められます。パスワードをファイルにエコーするのではなく単にコマンドにパスワードを与えたいのであれば、openssl文書とinterwebsを検索して答えを探してみました。引用符の有無にかかわらず-pass:somepassword-pass somepasswordを追加してみましたが、役に立ちませんでした。

私はようやく答えを見つけ出し、他のフォーラムで同じような質問をしている人たちを見たので、私は自分の質問を投稿してコミュニティのためにここに答えると思いました。

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

51
David Sulpy

ドキュメンテーションは私にはあまり明確ではありませんでした、しかしそれは答えを持っていました、挑戦は例を見ることができなかったことでした。

これを行う方法は次のとおりです。

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

コマンドラインのコマンド構文は常に-passの後にスペースが続き、次に提供するパスフレーズのタイプ、つまりプレーンパスフレーズの場合はpass:、スペースのないコロンの後の実際のパスフレーズになります。

さらに、ドキュメントには、次のようにして他のパスフレーズのソースを指定できることが記載されています。

  • 環境変数からパスワードを取得するためのenv:somevar
  • ファイルの最初の行からロケーションpathnameにあるパスワードを取得するためのfile:somepathname
  • ファイル記述子番号からパスワードを取得するための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

99
David Sulpy

-passin-passoutを使って両方のファイルにパスワードを設定しています。

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

123321はパスワードです。

5

現時点で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
4
Javier