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 でまとめてダウンロード
鍵はブラウザの Web Crypto API でローカルに生成され、ブラウザの外に出ることも、サーバーに送信されることもありません。
概要
1 画面で RSA の一連の流れを完結。左でパラメーターを選び、右で公開鍵・秘密鍵を読み、納品前にその場で検証できます。
- 01
ローカルでの鍵ペア生成
Web Crypto API でブラウザ内に 2048 / 3072 / 4096 ビットの RSA 鍵ペアを生成。秘密鍵は端末上で作られ、アップロード・記録・送信されないため、本番の機密にも内部デバッグにも安心です。
- 02
用途とハッシュの選択
各鍵を 1 つの用途に固定:暗号化は RSA-OAEP、署名は RSA-PSS または RSASSA-PKCS1-v1_5、それぞれ SHA-256 / SHA-384 / SHA-512 と組み合わせ。パラメーターを変えるたびに、用途が正しい新しい鍵ペアを再生成します。
- 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 ライブラリが求める形そのままです。
- 04
鍵強度とフィンガープリント
モジュラス長、固定の 65537 公開指数、SPKI 公開鍵の SHA-256 フィンガープリント、OpenSSH SHA256 を表示。双方が同じ鍵を持っているか照合できます。
- 05
暗号化・署名プレイグラウンド
折りたたみ式のプレイグラウンドで、生成した鍵ペアによる暗号化→復号、署名→検証を実行。どこかに組み込む前に往復と署名の有効性を確認できます。
- 06
コピー・ダウンロード・一括保存
任意の鍵をクリップボードにコピー、.pem・.json・.pub として個別にダウンロード、またはツールバーから鍵ペア全体を rsa-keypair.zip として保存できます。
使い方
先に用途とパラメーターを決め、ローカルで生成し、対象システムが取り込む正確な形式でエクスポートします。
- 01
目的に合う用途を選択:データ暗号化は RSA-OAEP、デジタル署名の生成は RSA-PSS または PKCS#1 v1.5。
- 02
鍵長(一般用途は 2048、長期・高価値は 3072 / 4096)とハッシュ(SHA-256 / SHA-384 / SHA-512)を選びます。
- 03
「生成」をクリックしてブラウザ内で鍵ペアを作成し、鍵強度・公開指数・SHA-256 / OpenSSH フィンガープリントを確認します。
- 04
秘密鍵・公開鍵の出力形式(PKCS#8・PKCS#1・SPKI・JWK・OpenSSH)を設定し、OpenSSL・nginx・SSH・JWT / OAuth ライブラリに合わせます。
- 05
各鍵をコピーまたはダウンロード、もしくは「.zip 保存」で両方を一度に保存。nginx の慣習に合わせるなら秘密鍵を .key にリネームします。
- 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 計算で、秘密鍵はアップロードされず端末内に保持
活用シーン
サーバー構築、アプリ統合、認証、プロトコルのデバッグまで幅広く役立ちます。
-
SSH とサーバーアクセス
OpenSSH 公開鍵を生成して authorized_keys に追加しパスワードレスログインを実現。対応する秘密鍵(PKCS#8 または PKCS#1 PEM)は手元に保持します。
-
JWT・OAuth・OIDC 署名
RSA-PSS(PS256)または PKCS#1 v1.5(RS256)鍵を生成して JWK を出力し、トークン発行者・ID プロバイダー・JWKS エンドポイントを参照する検証側で利用します。
-
TLS / HTTPS 鍵素材
PKCS#8 秘密鍵を生成し、CSR と証明書と組み合わせて nginx・Apache・ロードバランサーで使用(サーバーの慣習に合わせ .key にリネーム)。
-
ペイロード・機密の暗号化
RSA-OAEP で短い機密や 2 つのサービス間で交換する乱数 AES 鍵を暗号化し、本体データは対称暗号で扱います。
-
ライブラリ・SDK 統合
JWK や PEM を Node.js(crypto / jose)・Python(cryptography)・Java(KeyFactory)・Go に取り込み、インポートと署名の流れを素早く検証します。
-
テストフィクスチャとデモ
単体テスト・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 ジェネレーター(共有鍵署名)と組み合わせて使えます。