OpenSSLでファイルの暗号化と復号を行う

2020年7月14日

OpenSSL

OpenSSL によるファイルの暗号化・復号を行う機会があったのでメモ。重要な情報が記録されたファイルを保存するときに、暗号化をして保存したい場合があります。openssl は Mac や多くの Linux に標準で入っているので、暗号化・復号の方法として覚えておくと役に立つことがあると思います。

目次

  1. 暗号化
  2. 復号
  3. パスワード入力を求められないようにする

暗号化

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 KMSとAWS CLIを使ってファイルの暗号化と復号を行う

前回は OpenSSL を使ってファイルを暗号化する方法を紹介しました。 今回は AWS Key Management ...

続きを見る

-技術ブログ
-