[Docker コンテナあり] OS 標準のコマンドで手軽に暗号化したい

ちょっとファイルを暗号化したい時ってありますよね。そんな時どうしてますか?パスワード付き ZIP?いやぁ・・・

そんな時、どこのご家庭にもある openssl コマンドで共通鍵を使った暗号化ができる事を知ったのでメモです。

openssl コマンド

サーバー証明書の形式を変えたり、Web サーバーに https 接続して証明書の情報をみたりするアレです。

enc サブコマンドで暗号化/復号化ができます。

Enc – OpenSSLWiki

# 暗号化
$ openssl enc -e <モード> -in <入力ファイル> -out <出力ファイル>

# 復号化
$ openssl enc -d <モード> -in <入力ファイル> -out <出力ファイル>

-in オプションには暗号化/復号化したい元のファイルパスを、-out オプションにはその結果のファイルパスを指定します。

-e-d はそれぞれ暗号化するか復号化するかを指定するオプションです。使用するモードを指定します。指定可能なモードは以下のコマンドで確認できます。

$ openssl list-cipher-commands

#aes-128-cbc
#aes-128-ecb
#aes-192-cbc
# (snip)

例えば、AES 256bit CBC モードでファイルを暗号化する場合は以下のようになります。

$ openssl enc -e aes-256-cbc -in src.txt -out dest.txt.aes

するとパスワードを聞かれるので2入力します。

enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:

この例はインタラクティブにパスワードを入力していますが、-pass オプションを使うと直接パスワードを指定できたり、ファイルからパスワードを入力できたりします。詳しくは上記の OpenSSLWiki を見てみてください。

Docker コンテナにした

コマンドが長くて覚えられないので Docker コンテナにして DockerHub にアップロードしました。aes-256-cbc とか覚えられませんね。

mmktomato/openssl-cipher – Docker Hub

# 暗号化
$ docker run --rm -it -v $PWD:/tmp mmktomato/openssl-cipher -e <in_file> <out_file>

# 復号化
$ docker run --rm -it -v $PWD:/tmp mmktomato/openssl-cipher -d <in_file> <out_file>

# ヘルプを表示
$ docker run --rm mmktomato/openssl-cipher -h

# 暗号モードを表示
# (現在は `aes-256-cbc` のみサポートしています).
$ docker run --rm mmktomato/openssl-cipher -l

・・・docker コマンドの方が長いような・・・いやまあ Windows でも使いたいし・・・コンテナ化しといた方が何かとね、良いですよね。うん。

まとめ

openssl コマンドでファイルを暗号化する方法でした。見られて困るファイルはパスワード付き ZIP などではなくちゃんとした暗号化方式で暗号化しましょう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です