PEM から JWK への変換 — PEM 鍵を JWK 形式に変換
PEM エンコードされた暗号鍵を JWK 形式に変換します。RSA、EC、Ed25519 鍵をサポート。完全にブラウザ内で動作し、アップロードは不要です。
PEM to JWK
Convert PEM-encoded public or private keys to JWK format. Works entirely in your browser.
PEM は、1993 年に Privacy Enhanced Mail が提案されて以来、私たちと共にあった鍵形式です。id_rsa、cert.pem、これまでにサーバ設定に貼り付けられたすべての BEGIN PUBLIC KEY ブロックの形式です。JWK は、JSON ファーストの世界の鍵形式です。OAuth 2.0 プロバイダーが要求し、OpenID Connect ディスカバリドキュメントが返し、すべての言語のすべての JWT 署名ライブラリが入力として受け入れる形式です。この 2 つの間の変換は意味的な変換ではなく、構文的な変換です。base64 エンコードされた PEM アーマー内の ASN.1 DER 構造を解析し、鍵パラメータを抽出し、RFC 7517 で定義された JSON 構造に再組み立てします。
ASN.1 解析が難しい部分です。PEM ファイルは base64 エンコードされた DER であり、DER は ASN.1 構造のバイナリエンコーディングです。RSA 秘密鍵 PEM には、バージョン番号、モジュラス n、公開指数 e、秘密指数 d、CRT パラメータ(p、q、dp、dq、qinv)が含まれます。EC 秘密鍵 PEM には、曲線 OID と秘密スカラーが含まれます。本ツールはこれらを ASN.1 コンテナからアンラップし、対応する JWK メンバー名にマッピングします。RSA には n、e、d、EC には crv、x、y、d で、鍵タイプ kty が適宜設定されます。
実用的なユースケースは、OAuth 2.0 クライアント登録です。秘密鍵 JWT 認証(RFC 7523)を使用する OAuth クライアントを登録するとき、認可サーバーは公開鍵を JWK として要求します。鍵はディスクに PEM ファイルとしてあります。コンバーターは 1 回の貼り付け操作で 2 つの形式を橋渡しし、自動生成された鍵 ID(RFC 7638 サムプリント)が JWT ヘッダーに含める kid 値を提供します。
使い方
PEM 鍵を貼り付ける
PEM エンコードされた公開鍵または秘密鍵(RSA、EC、または Ed25519)を入力に貼り付けます。本ツールは PEM ラッパー内の ASN.1 DER 構造を解析し、鍵パラメータを抽出します。
JWK 出力を確認する
JWK は標準的なキータイプのメンバーを持つフォーマット済み JSON として表示されます:RSA には kty、n、e、EC には kty、crv、x、y、Ed25519 には kty、crv、x。鍵 ID(kid)は鍵マテリアルから自動生成されます。
JWK をコピーする
JWK をクリップボードにコピーし、JWT 署名ライブラリ、OAuth 2.0 クライアント設定、または OpenID Connect プロバイダメタデータで使用します。出力は RFC 7517 に準拠しています。
よくある質問
どの鍵タイプがサポートされていますか?
RSA(2048 ビットと 4096 ビットの公開鍵と秘密鍵)、EC(secp256r1/secp384r1/secp521r1 曲線上の P-256、P-384、P-521 曲線)、Ed25519(公開鍵と秘密鍵、RFC 8037)。レガシー DSA 鍵と暗号化された PEM ファイルはサポートされていません。
本ツールは JWK 出力で秘密鍵を公開しますか?
PEM 秘密鍵を貼り付けると、出力 JWK には秘密鍵コンポーネント(RSA/EC には d、Ed25519 には d)が含まれます。秘密鍵はブラウザ内にのみ表示され、端末から離れることはありません。公開鍵のみの出力が必要な場合は、PEM 公開鍵を貼り付けてください。
鍵 ID(kid)はどのように生成されますか?
kid は RFC 7638 に従った公開鍵コンポーネントの SHA-256 サムプリントです。これにより、同じ鍵の繰り返し変換で一貫した、決定論的で衝突耐性のある識別子が生成されます。入力が秘密鍵である場合でも、kid は公開コンポーネントのみから計算されます。
証明書 PEM を JWK に変換できますか?
いいえ。本ツールは生の鍵 PEM を変換し、X.509 証明書 PEM は変換しません。証明書の公開鍵を JWK に変換するには、まず SSL Certificate Decoder ツールを使って証明書から鍵を抽出し、抽出された鍵 PEM をここに貼り付けてください。
PEM の代わりに JWK 形式が必要なのはなぜですか?
JWK は JSON ベースプロトコルのネイティブ鍵形式です。JWT 署名ライブラリ、OAuth 2.0 クライアント登録、OpenID Connect ディスカバリドキュメント、AWS KMS 鍵ポリシー。PEM はファイルシステムの形式であり、JWK は API の形式です。暗号鍵を受け入れるほとんどのクラウドサービスは JWK を受け入れます。
制限事項
- 暗号化された PEM のサポートなしパスワード保護された PEM ファイル(Proc-Type: 4,ENCRYPTED ヘッダー付き)はサポートされていません。OpenSSL で PEM を復号化してから、復号化された鍵を貼り付けてください。
- DSA または古典的 Diffie-Hellman なしRSA、EC、Ed25519 の鍵タイプのみがサポートされています。DSA、DH、その他のレガシー鍵タイプは、サポートされていない鍵アルゴリズムを示すメッセージで拒否されます。
- JWK Set(JWKS)出力なし本ツールは単一の JWK を出力し、複数の鍵を含む JWK Set は出力しません。JWKS 出力(OIDC ディスカバリで必須)の場合は、個々の JWK を `keys` ラッパーを持つ JSON 配列に連結してください。
プラットフォーム別の注意点
- macOS
- コマンドライン変換の場合、`pem-jwk`(npm 経由)が PEM を JWK に変換します。ブラウザツールは、チャットやドキュメントから貼り付けた鍵の 1 回限りの変換に適しています。
- Linux
- OpenSSL の `-pubout` と手動抽出でパラメータを取得できますが、JWK JSON の組み立ては手動です。ブラウザツールは PEM から JWK への変換全体を 1 ステップで実行します。
- Web
- 完全にクライアントサイドで動作します。秘密鍵はアップロードされず、変換はブラウザのメモリ内で行われます。