コードはターミナル(MacOS)にて実行していきます。
dotenvxを使った.env暗号化についての記事をいくつか読むと「dotenvx encryptを実行すると.env.keysが作成される」とあります。しかし私の場合、”✔ encrypted (.env)”しか出てきません。
ちなみに.envはターミナルにて
echo "hello=world" > .env
cat .env
とかで作成できます。ファイルの中身↓
(後述しますが.envはシークレットファイル)
話を.env.keysに戻します。
ディレクトリにも.env.keysが見当たりません。
とりあえず生成AIのperplexityに聞いてみます。
存在している可能性…。
思い当たったのは「がちゃがちゃやってる最中に.env.keysファイルが作成→シークレットファイルとして存在している」という路線。
シークレットファイルを可視化してみます。Finderの当該ディレクトリにて「command + shift + .」。
するとありましたね。やっぱりシークレットファイルでした。
試しにこの状態で.env.keysファイルを消してからdotenvx encryptを実行してみます。
すると今度はちゃんと.env.keysが作成されました。
dotenvxよく分からんからファイルの挙動を確認してみた
謎は解けたのでこれ以上書くこともないんですが、せっかくなんで.env.keysと.envファイルの挙動を確認した顛末も追記します。(備忘録になるし)
dotenvx encryptを実行するとhello=worldが
こうなる↓
公開鍵が生成され、worldの部分が暗号化されています。これは便利!
ちなみに同時作成された.env.keys↓
これはworldを復号するために必要な秘密鍵。本来は流出厳禁。
こいつらを使って
dotenvx run -f .env -- sh -c 'echo $hello'
で復号した文字worldを出力できます。
これはworldが暗号化されたものである
encrypted:BKLzNHTBykUqsiWZscdlm75xIPfBP/naQ0fURDEUkgI4CzenIdPGAFE1Xs6NBuBI5F0i/0tI+Y5ZYxWmG1mYKzFnczFM4mBdXMN3/rSuJVWBwbrOP6sQTsecIT11MJE/hX6aTeh4
が.env.keysファイル内に記述されているDOTENV_PRIVATE_KEYを使って復号されたものです。
試しに.env.keysファイルを削除してから
dotenvx run -f .env -- sh -c 'echo $hello'
を実行してみます。
復号できないってエラーメッセージが出ました。秘密鍵がないからです。
ちなみに
source ./.env
echo $hello
で.envファイルの中身を覗くと暗号化された文字列が出力されます。
素人ながらなんとなく暗号化と復号化の依存関係を掴めてきました。
今回は以上。