はじめに
SESSION_SECRET の生成方法がいつも分からなくなるので、備忘としてメモを残しておきます。
前提知識
SESSION_SECRETとは
SESSION_SECRET は、セッション情報を保護するために使われる秘密鍵です。 多くの Web フレームワークや認証ミドルウェアで使われており、以下のような用途があります。
「十分にランダムで、推測できない値」であることが重要なので、よくある設定例として、32 bytes 以上(64 hex 文字)のランダム値が求められます。
手順
OpenSSL
openssl が入っていれば、bash ワンライナーで一発です。
openssl rand -hex 32
これで以下のような 64 文字の hex 文字列が出力されます。
9f3c2a8e5d1b4c0f8e6b9d2a7f1c3e4b5a6d8c9e0f1a2b3c4d5e6f7a8b9c0
これをそのまま .env に設定すればOKです。
SESSION_SECRET=9f3c2a8e5d1b4c0f8e6b9d2a7f1c3e4b5a6d8c9e0f1a2b3c4d5e6f7a8b9c0
PowerShell
Windows環境であればPowerShellも良いでしょう。
[Convert]::ToHexString((1..32 | ForEach-Object { Get-Random -Maximum 256 }))
urandom
opensslがない場合、/dev/urandom でも生成可能です。
head -c 32 /dev/urandom | xxd -p -c 256
Python
Pythonが使えるなら以下でも良いでしょう。
python3 -c "import secrets; print(secrets.token_hex(32))"
Node
Node が入っていればこれも手軽です。
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
おわりに
これでもう困らない。将来の自分、頑張れ。
以上。