シークレットキージェネレーター
JWT HS256/HS512、AES-128/256、Laravel の APP_KEY、Rails の secret_key_base、Django の SECRET_KEY、セッション Cookie 用のシークレットキーを安全な乱数で生成します。
エントロピー 256 ビット · 1 件あたり 43 文字
crypto.getRandomValues でローカル生成しており、送信・保存は一切ありません。シークレットは環境変数やシークレットマネージャーに保管し、ソースコードには書かないでください。
シークレットキージェネレーターとは?
フレームワークやライブラリには、特定の形式のランダムなシークレットキーが必要です。JWT HS256 なら 256 ビットの Base64url 文字列、AES-256 なら 32 バイトの 16 進、Laravel の APP_KEY なら base64: + 32 バイト、Rails の secret_key_base なら 16 進 128 文字、Django の SECRET_KEY なら 50 文字です。用途 を選ぶと、適切な長さとエンコーディングのキーが生成されます。形式を自分でカスタマイズすることもできます。
シークレットキージェネレーターの使い方
- JWT HS256 シークレット や Laravel APP_KEY などの 用途 を選びます。
- 必要なら 形式 と ランダムバイト数 / 長さ(文字数) を調整します(カスタムに切り替わります)。
- キーが得られるまで 再生成 をクリックし、環境変数にコピーします。
例
Purpose: JWT HS256 secret (256 bits, Base64url)
-IXerdjEBBrFmWvMzQ0izB3-w1aweuEukH9SlJBWmwE
256 ビットのエントロピー。ランダムなので、実際のキーは異なります。
シークレットキージェネレーターを使うべき場面
新しい環境のセットアップ、漏えいしたキーのローテーション、JWT 署名の設定に使います。非対称署名(RS256、ES256)には、共有シークレットではなく鍵ペアが必要です。キーを Git にコミットせず、環境変数やシークレットマネージャーに置いてください。
シークレットキージェネレーターの仕組み
すべてのキーは crypto.getRandomValues から得られます。バイトベースのプリセットは、アルゴリズムが必要とするバイト数ちょうど(AES-128 は 16、AES-256 と HS256 は 32、HS512 と Rails は 64)を引き、16 進、Base64、Base64url としてエンコードします。Django のキーは、英字と数字から一様に選んだ 50 文字(約 298 ビット)です。エントロピーの行には強度がビットで表示され、128 ビット未満では警告が出ます。
一般的な使用例
- 新しい Laravel のデプロイ用に APP_KEY を設定する
- JWT HS256 の署名シークレットを作成する
- 保存データを暗号化する AES-256 鍵を生成する
- 漏えい後に Django や Rails のシークレットをローテーションする
セキュリティ注意事項
ローカルで生成され、どこにも送信されません。キーを持つ人は誰でもトークンを偽造したりデータを復号したりできるため、環境変数かシークレットマネージャーにだけ保存してください。
よくある質問
JWT HS256 のシークレットはどれくらいの長さにすべきですか?
RFC 7518 の推奨どおり、SHA-256 の出力サイズである 256 ビット(32 バイト)以上です。HS512 では 512 ビットを使ってください。
php artisan key:generate を実行するのと同じですか?
形式としては同じです。Laravel のコマンドも 32 バイトのランダムな値を作り、Base64 エンコードして base64: を付けます。
稼働中のアプリのキーを変更するとどうなりますか?
古いキーで作られた既存のセッション、署名付き Cookie、トークン、暗号化されたデータは、無効になるか読めなくなります。ローテーションは慎重に計画してください。