シークレットキージェネレーター

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 文字です。用途 を選ぶと、適切な長さとエンコーディングのキーが生成されます。形式を自分でカスタマイズすることもできます。

シークレットキージェネレーターの使い方

  1. JWT HS256 シークレット や Laravel APP_KEY などの 用途 を選びます。
  2. 必要なら 形式 と ランダムバイト数 / 長さ(文字数) を調整します(カスタムに切り替わります)。
  3. キーが得られるまで 再生成 をクリックし、環境変数にコピーします。

例

入力
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、トークン、暗号化されたデータは、無効になるか読めなくなります。ローテーションは慎重に計画してください。

他のカテゴリを見る