RSA鍵ペア生成ツール
RSA公開鍵と秘密鍵のペアをブラウザ上で生成します
デフォルト: 2048ビット
PEM鍵の検証
公開鍵または秘密鍵のPEMを貼り付けて、有効かどうかを確認できます
使い方
このツールについて
このRSA鍵ペア生成ツールは、開発・SSH・TLS・JWTの検証用に公開鍵と秘密鍵が必要なときに使用します。日常的なテストには2048ビット、より強度の高いペアが必要な場合は4096ビットを選び、OpenSSL系ワークフローに適したPEM形式(PKCS#8形式の秘密鍵とX.509形式の公開鍵)でエクスポートできます。 生成処理はすべてブラウザ内で完結します。鍵はお使いの端末上で作成され、Handy Dev Toolsのサーバーにはアップロードされません。これは本番以外の用途であっても、秘密情報を扱う際に重要なポイントです。ツールは無料で、アカウントも不要です。 独自の安全な鍵管理プロセスに従わない限り、生成した鍵は開発用の認証情報として扱ってください。現実的なテストには2048ビット以上を推奨し、秘密鍵をソース管理や共有チャットに含めないようにしてください。
使い方
1. ページを開くと、デフォルト(2048ビット)で鍵ペアが自動生成され、公開鍵と秘密鍵が表示されます。 2. 鍵長を変更する場合: 鍵長入力欄に512〜8192ビットの8の倍数の値を入力し、「生成」ボタンをクリックします。 3. 同じ鍵長で新しい鍵ペアを生成する場合: 「更新」ボタンをクリックします。 4. 鍵のコピー: 各鍵の表示欄にあるコピーボタンをクリックすると、クリップボードにコピーされます。 5. 鍵のダウンロード: 各鍵の表示欄にあるダウンロードボタンをクリックすると、PEM形式のファイルとしてダウンロードされます(公開鍵: public_key.pem、秘密鍵: private_key.pem)。
オプション
鍵長: 512〜8192ビットの範囲で、8の倍数である必要があります。デフォルトは2048ビットです。数値入力欄の上下ボタンで8ずつ増減できます。無効な値(範囲外、8の倍数でない)を入力すると、エラーメッセージが表示され、「生成」と「更新」ボタンが無効化されます。
ユースケース
• SSH接続用の鍵ペア生成(公開鍵認証の設定) • SSL/TLS証明書の秘密鍵生成 • JWT署名用の鍵ペア生成 • 暗号化通信の鍵ペア生成 • 開発・テスト環境での一時的な鍵ペア生成 • コード署名用の鍵ペア生成
コード例
1// 鍵ペアの生成
2const keyPair = await window.crypto.subtle.generateKey(
3 {
4 name: 'RSA-OAEP',
5 modulusLength: 2048,
6 publicExponent: new Uint8Array([1, 0, 1]), // 65537
7 hash: 'SHA-256',
8 },
9 true, // extractable
10 ['encrypt', 'decrypt']
11);1from cryptography.hazmat.primitives.asymmetric import rsa
2from cryptography.hazmat.primitives import serialization
3
4# 鍵ペアの生成
5private_key = rsa.generate_private_key(
6 public_exponent=65537,
7 key_size=2048
8)
9public_key = private_key.public_key()
10
11# PEM形式でエクスポート
12private_pem = private_key.private_bytes(
13 encoding=serialization.Encoding.PEM,
14 format=serialization.PrivateFormat.PKCS8,
15 encryption_algorithm=serialization.NoEncryption()
16)
17public_pem = public_key.public_bytes(
18 encoding=serialization.Encoding.PEM,
19 format=serialization.PublicFormat.SubjectPublicKeyInfo
20)1# 2048ビットのRSA秘密鍵を生成
2openssl genrsa -out private_key.pem 2048
3
4# 公開鍵を抽出
5openssl rsa -in private_key.pem -pubout -out public_key.pem1# PEM → OpenSSH公開鍵変換
2ssh-keygen -f public_key.pem -i -m PKCS8
3
4# フィンガープリント確認
5openssl rsa -in private_key.pem -check
6
7# 公開鍵からCSR生成
8openssl req -new -key private_key.pem -out csr.pem1$config = [
2 'private_key_bits' => 2048,
3 'private_key_type' => OPENSSL_KEYTYPE_RSA,
4];
5$key = openssl_pkey_new($config);
6openssl_pkey_export($key, $privatePem);
7$details = openssl_pkey_get_details($key);
8$publicPem = $details['key'];
9
10// openssl_pkey_export は OpenSSL/PHP により PKCS#1 (BEGIN RSA PRIVATE KEY) を出すことがある
11// 本ツールは PKCS#8 (BEGIN PRIVATE KEY) を出力する1// .env には PEM 本体ではなくファイルパスを書く
2// JWT_ALGO=RS256
3// JWT_PRIVATE_KEY=file:///var/www/certs/private_key.pem
4// JWT_PUBLIC_KEY=file:///var/www/certs/public_key.pem
5
6// Laravel Passport
7// php artisan passport:keys
8// または本ツールの PEM を storage/oauth-private.key
9// と storage/oauth-public.key にコピー技術的な仕組み
RSA鍵ペアの生成には、Web Crypto APIを優先的に使用します。Web Crypto APIが利用できない場合や、PEM形式への変換に失敗した場合は、node-forgeライブラリにフォールバックします。生成された鍵はPEM形式で、秘密鍵は PKCS#8(-----BEGIN PRIVATE KEY-----)、公開鍵は X.509 SubjectPublicKeyInfo(-----BEGIN PUBLIC KEY-----)です。鍵長が大きいほど生成に時間がかかりますが、2048ビットの鍵ペアは通常5秒以内に生成されます。すべての処理はブラウザ内で完結し、鍵はサーバーへ送信されません。
プライバシーとデータの扱い
鍵の生成はすべてブラウザ内で完結し、生成された公開鍵・秘密鍵をサーバーへ送信しません。鍵はブラウザのメモリ上にのみ存在し、自動保存されません。秘密鍵は機密情報であるため、適切に管理し、不要になったらブラウザを閉じるなどしてメモリからクリアしてください。FAQ やサンプルコードに鍵を貼り付けないでください。本番用の鍵は、可能であれば隔離された信頼できる環境で生成することを推奨します。
よくある質問
- Q: RSA鍵ペアとは?
- A: RSA鍵ペアは、暗号化・署名・SSH・TLS・JWTで使用される公開鍵と、それに対応する秘密鍵のセットです。公開鍵は共有できますが、秘密鍵は秘密にしておく必要があります。
- Q: どの鍵サイズを使うべきですか?
- A: 一般的な開発やテストには2048ビットを使用してください。より強固なセキュリティが必要な場合は4096ビットを推奨します。レガシー環境での実験を除き、512ビットなど非常に小さいサイズは避けてください。
- Q: 鍵はサーバーにアップロードされますか?
- A: いいえ。生成はブラウザ内で行われます。鍵はHandy Dev Toolsのサーバーには送信されません。
- Q: どの形式でエクスポートできますか?
- A: OpenSSL系ワークフローに適したPEM形式で出力されます(PKCS#8形式の秘密鍵 / X.509形式の公開鍵)。コピーまたはダウンロードしてローカルで利用できます。
- Q: 無料ですか?
- A: はい。登録は不要です。
- Q: PHPでこのツールと同じ鍵ペアを生成するには?
- A: openssl_pkey_new() に OPENSSL_KEYTYPE_RSA と 2048 などの鍵長を渡し、秘密鍵は openssl_pkey_export()、公開鍵は openssl_pkey_get_details() で取得します。このページの PHP コード例を参照してください。openssl_pkey_export() は OpenSSL/PHP の版により PKCS#1(BEGIN RSA PRIVATE KEY)を出すことがあり、本ツールは PKCS#8(BEGIN PRIVATE KEY)です。どちらも一般的に利用できます。
- Q: 生成した鍵は Laravel の JWT や Passport にそのまま使えますか?
- A: 開発用途では使えます。本ツールは PKCS#8 秘密鍵と X.509(SPKI)公開鍵を出力し、Laravel Passport や RS256 の JWT ライブラリ(例: tymon/jwt-auth)が受け付けます。.env の JWT_PRIVATE_KEY / JWT_PUBLIC_KEY に PEM のファイルパスを指定するか、Passport なら storage/oauth-private.key と storage/oauth-public.key にコピーしてください。秘密鍵はコミットせず、ブラウザ生成の鍵は独自の鍵管理がない限り開発用として扱ってください。
