セキュリティ

RSA 鍵生成ツール

RSA 公開鍵・秘密鍵ペアをブラウザ内で完全にローカル生成します。アップロードもサーバー通信もありません。鍵長(2048 / 3072 / 4096 ビット)、ハッシュ、用途(暗号化は RSA-OAEP、署名は RSA-PSS または PKCS#1 v1.5)を選び、PEM(PKCS#8 / PKCS#1 / SPKI)、JWK、OpenSSH 公開鍵で出力できます。鍵強度・公開指数・SHA-256 / OpenSSH フィンガープリントを確認し、TLS・SSH・JWT・OAuth や自作アプリへ組み込む前に、暗号化・復号や署名・検証をその場で試せます。

  • 2048・3072・4096 ビットの RSA 鍵ペアを SHA-256 / SHA-384 / SHA-512 で生成
  • 用途を RSA-OAEP 暗号化・RSA-PSS 署名・PKCS#1 v1.5 署名から切り替え
  • 秘密鍵は PKCS#8 / PKCS#1 / JWK、公開鍵は SPKI / PKCS#1 / OpenSSH / JWK で出力
  • 鍵強度・公開指数・SHA-256 / OpenSSH フィンガープリントを確認し、.zip でまとめてダウンロード
工具/RSA 鍵生成ツール
鍵ペアはまだありません

鍵はブラウザの Web Crypto API でローカルに生成され、ブラウザの外に出ることも、サーバーに送信されることもありません。

オプション

概要

1 画面で RSA の一連の流れを完結。左でパラメーターを選び、右で公開鍵・秘密鍵を読み、納品前にその場で検証できます。

  1. 01

    ローカルでの鍵ペア生成

    Web Crypto API でブラウザ内に 2048 / 3072 / 4096 ビットの RSA 鍵ペアを生成。秘密鍵は端末上で作られ、アップロード・記録・送信されないため、本番の機密にも内部デバッグにも安心です。

  2. 02

    用途とハッシュの選択

    各鍵を 1 つの用途に固定:暗号化は RSA-OAEP、署名は RSA-PSS または RSASSA-PKCS1-v1_5、それぞれ SHA-256 / SHA-384 / SHA-512 と組み合わせ。パラメーターを変えるたびに、用途が正しい新しい鍵ペアを再生成します。

  3. 03

    複数形式での出力

    秘密鍵は PKCS#8(BEGIN PRIVATE KEY)・PKCS#1(BEGIN RSA PRIVATE KEY)・JWK、公開鍵は SPKI・PKCS#1・OpenSSH の ssh-rsa 行・JWK で出力。OpenSSL、nginx、Java、Node.js、JWT ライブラリが求める形そのままです。

  4. 04

    鍵強度とフィンガープリント

    モジュラス長、固定の 65537 公開指数、SPKI 公開鍵の SHA-256 フィンガープリント、OpenSSH SHA256 を表示。双方が同じ鍵を持っているか照合できます。

  5. 05

    暗号化・署名プレイグラウンド

    折りたたみ式のプレイグラウンドで、生成した鍵ペアによる暗号化→復号、署名→検証を実行。どこかに組み込む前に往復と署名の有効性を確認できます。

  6. 06

    コピー・ダウンロード・一括保存

    任意の鍵をクリップボードにコピー、.pem・.json・.pub として個別にダウンロード、またはツールバーから鍵ペア全体を rsa-keypair.zip として保存できます。

使い方

先に用途とパラメーターを決め、ローカルで生成し、対象システムが取り込む正確な形式でエクスポートします。

  1. 01

    目的に合う用途を選択:データ暗号化は RSA-OAEP、デジタル署名の生成は RSA-PSS または PKCS#1 v1.5。

  2. 02

    鍵長(一般用途は 2048、長期・高価値は 3072 / 4096)とハッシュ(SHA-256 / SHA-384 / SHA-512)を選びます。

  3. 03

    「生成」をクリックしてブラウザ内で鍵ペアを作成し、鍵強度・公開指数・SHA-256 / OpenSSH フィンガープリントを確認します。

  4. 04

    秘密鍵・公開鍵の出力形式(PKCS#8・PKCS#1・SPKI・JWK・OpenSSH)を設定し、OpenSSL・nginx・SSH・JWT / OAuth ライブラリに合わせます。

  5. 05

    各鍵をコピーまたはダウンロード、もしくは「.zip 保存」で両方を一度に保存。nginx の慣習に合わせるなら秘密鍵を .key にリネームします。

  6. 06

    テストプレイグラウンドでサンプルを暗号化/復号または署名/検証し、デプロイ前に鍵ペアが正しく動くことを確認します。

詳細

使い捨ての乱数鍵ではなく、実際の鍵発行とデバッグのために設計されています。

  • ブラウザ内での RSA-OAEP・RSA-PSS・RSASSA-PKCS1-v1_5 鍵ペア生成
  • 2048 / 3072 / 4096 ビットのモジュラスと SHA-256 / SHA-384 / SHA-512 ハッシュ選択
  • 秘密鍵を PKCS#8 PEM・PKCS#1 PEM・JWK で出力
  • 公開鍵を SPKI PEM・PKCS#1 PEM・OpenSSH(ssh-rsa)・JWK で出力
  • 帯域外照合のための SHA-256 SPKI フィンガープリントと OpenSSH SHA256
  • Base64 入出力の暗号化/復号・署名/検証プレイグラウンドを内蔵
  • 相互運用性を最大化する固定 65537 公開指数
  • ワンクリックのコピー、個別ダウンロード(.pem / .json / .pub)、まとめて .zip ダウンロード
  • 長い PEM ブロックを読み、鍵を並べて比較できる全画面ワークスペース
  • 完全ローカルな Web Crypto 計算で、秘密鍵はアップロードされず端末内に保持

活用シーン

サーバー構築、アプリ統合、認証、プロトコルのデバッグまで幅広く役立ちます。

  1. SSH とサーバーアクセス

    OpenSSH 公開鍵を生成して authorized_keys に追加しパスワードレスログインを実現。対応する秘密鍵(PKCS#8 または PKCS#1 PEM)は手元に保持します。

  2. JWT・OAuth・OIDC 署名

    RSA-PSS(PS256)または PKCS#1 v1.5(RS256)鍵を生成して JWK を出力し、トークン発行者・ID プロバイダー・JWKS エンドポイントを参照する検証側で利用します。

  3. TLS / HTTPS 鍵素材

    PKCS#8 秘密鍵を生成し、CSR と証明書と組み合わせて nginx・Apache・ロードバランサーで使用(サーバーの慣習に合わせ .key にリネーム)。

  4. ペイロード・機密の暗号化

    RSA-OAEP で短い機密や 2 つのサービス間で交換する乱数 AES 鍵を暗号化し、本体データは対称暗号で扱います。

  5. ライブラリ・SDK 統合

    JWK や PEM を Node.js(crypto / jose)・Python(cryptography)・Java(KeyFactory)・Go に取り込み、インポートと署名の流れを素早く検証します。

  6. テストフィクスチャとデモ

    単体テスト・CI フィクスチャ・ドキュメント例・セキュリティ研修向けに、本番鍵に触れず使い捨ての鍵ペアと署名を用意します。

関連情報

鍵ペアなしで鍵ファイルのフィンガープリントや成果物を検証したい場合は ハッシュ生成ツール を使います。これらの RSA 鍵でトークンに署名・検証する際は JWT インスペクター に進みます。DER バイトや PEM ブロックを安全に確認・転送するには Base64 エンコーダー・デコーダー と組み合わせます。これらの鍵から証明書が発行されたら、 証明書デコーダー でサブジェクト、SAN、有効期間を確認してからデプロイしてください。

使い方のヒント

RSA 鍵は長期間有効な機密です。それを信頼するすべてのシステムの安全は、秘密鍵の扱い方にかかっています。

  • 鍵は最低 2048 ビット、長年有効である必要がある鍵には 3072 または 4096 ビットを推奨
  • 用途を目的に合わせる:暗号化は OAEP、署名は PSS または PKCS#1。1 つの鍵を両用しない
  • 秘密鍵はオフラインで保管し、ログ・スクリーンショット・チャット・チケット・バージョン管理から遠ざける
  • インポート前に対象が求める正確な形式(PKCS#8 か PKCS#1、SPKI か OpenSSH、PEM か DER)を確認
  • 公開鍵の転送後は、別の経路で SHA-256 または OpenSSH フィンガープリントを照合
  • 保存・共有の前に、パスフレーズ(例:OpenSSL)で秘密鍵を暗号化保護する
  • 鍵は定めた周期でローテーションし、漏えいの恐れがある鍵は直ちに失効させる
  • 高価値の本番システムでは、エクスポート可能な鍵のリスクを避けるためハードウェアや KMS 管理の鍵を優先

制限事項

誤ったセキュリティの前提で設計しないよう、これらの境界を理解してください。

  • RSA-OAEP は小さなデータ(数百バイト)しか暗号化できない。対称鍵を暗号化し本体は AES で処理する
  • 本ツールは裸の鍵ペアを生成するのみで、X.509 証明書や CSR の発行、鍵の保管・ローテーションは行いません
  • nginx / TLS では本ツールの秘密鍵を ssl_certificate_key に使えますが、ssl_certificate には CA 署名の証明書が必要です
  • 生成される秘密鍵は暗号化されていません。パスフレーズ保護が必要なら OpenSSL などの外部ツールで処理します
  • 公開指数は標準的で相互運用性のある 65537(0x010001)に固定され、変更できません
  • 4096 ビット鍵の生成は目に見えて時間がかかり、端末とブラウザの性能に依存します

よくある質問

形式・用途・セキュリティ・相互運用性・実用上の制限に関するよくある質問への回答です。

鍵はサーバーで生成されますか?

いいえ。すべての鍵ペアは Web Crypto API でブラウザ内にローカル生成されます。秘密鍵は端末上で作られ、アップロード・記録・送信されないため、実際の機密にも安全に使えます。

PKCS#8 と PKCS#1 の違いは?

同じ RSA 秘密鍵の 2 つのエンコードです。PKCS#8(BEGIN PRIVATE KEY)は最新でアルゴリズム非依存のラッパーで、多くの現行ライブラリが使用します。PKCS#1(BEGIN RSA PRIVATE KEY)は旧来の RSA 専用形式で、一部の古いツールや OpenSSL の流れで今も求められます。どちらも PEM テキストで、本ツールでは鍵を再生成せず形式を切り替えられます。

nginx や OpenSSL で .key・.pem・.crt は何を意味しますか?

これらは命名の慣習であり、形式の違いではありません。中身は通常どちらも PEM です。.key は慣習的に秘密鍵(nginx の ssl_certificate_key)、.crt / .cer / .pem は証明書(ssl_certificate)を保持します。本ツールは証明書ではなく裸の公開鍵を生成するため、TLS には別途 CSR と CA 署名の証明書が必要です。

用途は OAEP・PSS・PKCS#1 のどれを選ぶ?

データ暗号化は RSA-OAEP、最新の署名は RSA-PSS(JWT の PS256)、互換性のための署名は RSASSA-PKCS1-v1_5(JWT の RS256 や多くの旧システム)を使います。暗号化用に生成した鍵を署名に流用しないでください(逆も同様)。

2048 ビット RSA はまだ安全ですか、4096 にすべき?

2048 ビット RSA は今日でも多くの用途で安全とされ、3072 ビットはより強い長期マージンを提供します。4096 ビットは極めて長期・高価値の鍵に余裕を与えますが、演算は遅く鍵も大きくなります。鍵が信頼され続ける必要のある年数で選んでください。

このツールから SSH 鍵を得るには?

公開鍵形式を OpenSSH に設定すると authorized_keys 用の ssh-rsa 行が得られ、秘密鍵は PKCS#8 または PKCS#1 PEM で出力できます。クライアント側では厳格な権限(chmod 600)で秘密鍵を保存してください。

これらの鍵を Node.js・Python・Java に取り込めますか?

はい。Web Crypto と jose は JWK、Node.js crypto と Python cryptography は PKCS#8 PEM、Java KeyFactory は PKCS#8 または PKCS#1 PEM を使います。ライブラリが示す形式を選んでそのままインポートできます。

なぜ RSA-OAEP は短いメッセージしか暗号化できないのですか?

RSA は 1 回の演算で鍵長からパディングを引いた分、最大でも数百バイトしか暗号化できません。実システムでは RSA-OAEP で乱数の対称(AES)鍵を暗号化し、本体データはその AES 鍵で暗号化します(ハイブリッド暗号)。

公開指数 65537 とは?

RSA 公開鍵 (n, e) の e で、暗号化と署名検証に使われます。65537(0x010001)はほぼ普遍的な既定値で、安全なほど大きく、かつ高速なほど小さいため相互運用性を最大化します。本ツールは e を 65537 に固定します。

関連ツール

RSA 鍵は、ハッシュジェネレーター(フィンガープリント)、JWT インスペクター(デコードと検証)、HMAC ジェネレーター(共有鍵署名)と組み合わせて使えます。