OpenSSL によるファイルの暗号化・復号を行う機会があったのでメモ。重要な情報が記録されたファイルを保存するときに、暗号化をして保存したい場合があります。openssl は Mac や多くの Linux に標準で入っているので、暗号化・復号の方法として覚えておくと役に立つことがあると思います。
目次
暗号化
plain.txt
ファイルを AES256 CBC モードで暗号化したい場合、以下のコマンドを実行します。暗号化された encrypted.txt
が作成されます。
openssl enc -aes-256-cbc -e -in plain.txt -out encrypted.txt
コマンドを実行するとパスワードを求められるので 2 回入力します。
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:
復号
復号する場合は以下のコマンドで。
openssl enc -aes-256-cbc -d -in encrypted.txt -out plain.txt
パスワードを求められるので暗号化したときのパスワードを入力します。
enter aes-256-cbc decryption password:
パスワード入力を求められないようにする
暗号化・復号の際にパスワードを求められますが、毎回入力するのは面倒だったり、自動化の際に困ったりします。パスワード入力を求められない方法を調べるには man openssl
コマンドでマニュアルを見てみましょう。
マニュアルは量が多いのですが、その中の openssl enc
コマンドのマニュアルは ENC
で検索すると見つかります。様々なオプションがあるのでパスワードのところだけ抜粋。
openssl enc [-pass arg]
-pass arg
The password source.
上記のように -pass
というオプションで password source が渡せるようです。password source を確認するには、引き続きマニュアルを Password arguments
で検索をします。password source に指定できるのは以下 5 つ。
source | 説明 |
---|---|
pass:password | パスワード |
env:var | 環境変数 |
file:path | ファイル |
fd:number | ファイルディスクリプタの番号 |
stdin | 標準入力 |
いろいろありますが、環境変数からパスワードを渡せる env:var
をよく使うので、これだけ覚えておけばいいかと思います。
環境変数 ENCRYPTION_KEY
にパスワードを設定して、以下のコマンドで暗号化・復号を行うことができます。
ENCRYPTION_KEY=MyPassword
openssl enc -aes-256-cbc -e -in plain.txt -out encrypted.txt -pass env:ENCRYPTION_KEY
openssl enc -aes-256-cbc -d -in encrypted.txt -out plain.txt -pass env:ENCRYPTION_KEY
次回は AWS Key Management Service (KMS) と AWS CLI を使ってファイルを暗号化する方法を紹介します。
-
AWS KMSとAWS CLIを使ってファイルの暗号化と復号を行う
前回は OpenSSL を使ってファイルを暗号化する方法を紹介しました。 今回は AWS Key Management ...
続きを見る