EC鍵ジェネレーター
ES256、ES384、ES512署名、ECDH、TLS証明書に使用する、P-256、P-384、またはP-521の楕円曲線鍵ペアを生成します。結果には、暗号化されていないPKCS #8 PEM形式の秘密鍵、SPKI PEM形式の公開鍵、SHA-256フィンガープリント付きのOpenSSH ecdsa-sha2公開鍵行、およびRFC 7638のJWKサムプリントが含まれます。各ペアはNodeのcryptoモジュールで新たに生成され、保存されることはありません。
よくある質問
どの曲線を選べばよいですか?
P-256(prime256v1またはsecp256r1とも呼ばれます)は最も広くサポートされている曲線で、約128ビットのセキュリティを提供します。P-384は約192ビットで、CNSAなど一部の政府プロファイルで必要です。P-521はNIST曲線の中で最も大きく、サポートは比較的限られているため、システムから指定された場合にのみ選んでください。
各曲線に対応するJWTアルゴリズムはどれですか?
P-256鍵はES256、P-384鍵はES384、P-521鍵はES512で署名します。JOSEでは各アルゴリズムに対応する曲線が1つに定められているため、JWTジェネレーターは曲線が一致しない鍵を拒否します。結果には、鍵に対応するアルゴリズムが表示されます。
どの形式で出力されますか?
秘密鍵はPEM形式でエンコードされたPKCS #8(BEGIN PRIVATE KEY)、公開鍵は名前付き曲線を含むPEM形式でエンコードされたSubjectPublicKeyInfo(BEGIN PUBLIC KEY)です。また、OpenSSHがauthorized_keysで必要とするecdsa-sha2-nistp256、nistp384、またはnistp521の行も取得できます。
SEC1形式(BEGIN EC PRIVATE KEY)にするにはどうすればよいですか?
一部のツールでは、今も古いSEC1エンコーディングが必要です。OpenSSL 3では、openssl pkey -in key.pem -traditional -out key-ec.pemを実行するか、openssl ec -in key.pem -out key-ec.pemを実行してください。鍵自体は変わりません。
この鍵で証明書署名要求を作成できますか?
はい。秘密鍵のPEMを保存し、openssl req -new -key key.pem -subj "/CN=example.com" -out request.csrを実行してから、CSR Decoderで要求を確認してください。認証局はTLS証明書にP-256鍵とP-384鍵を使用できます。
EC鍵はなぜRSA鍵より小さいのですか?
楕円曲線暗号では、はるかに短い鍵で同等のセキュリティを実現できます。そのため、P-256鍵は3072ビットRSA鍵に相当します。署名は短く、署名処理も高速です。P-256の公開鍵は65バイトです。
秘密鍵はパスフレーズで保護されていますか?
いいえ。他のツールですぐに読み取れるよう、暗号化せずに返されます。保存する場合は、openssl pkey -in key.pem -aes256 -out key-encrypted.pemで暗号化してください。暗号化されていない秘密鍵をリポジトリにコミットしないでください。
JWKサムプリントは何に使いますか?
RFC 7638のサムプリントは、鍵のcrv、kty、x、yメンバーから生成されるbase64url SHA-256ハッシュです。PEM形式やJWK形式に依存しない安定した鍵識別子であり、JWTヘッダーやJWKSドキュメントのkidとして便利です。
鍵ペアは保存されますか?
いいえ。リクエストごとにメモリ上で生成して一度だけ返し、ログにも保存にも残しません。ページを離れると再表示できないため、離れる前に両方の鍵をコピーしてください。
コメント欄を変更すると何が変わりますか?
OpenSSH公開鍵行の末尾にuser@laptopのようなラベルが追加されるだけなので、authorized_keys内で鍵を見分けやすくなります。フィンガープリントと鍵の内容は変わりません。コメントは200文字まで入力できます。