JWK⇔PEM変換(RSA・EC・Ed25519)
JWK(JSON Web Key)とPEM(公開鍵はSPKI、秘密鍵はPKCS#8)を相互に変換します。入力の形から変換方向を自動で判定し、処理はブラウザ標準のWeb Crypto APIだけで行うため、鍵がサーバーに送信されることはありません。鍵の新規作成は キーペア生成、JWTの中身の確認は JWTデコーダー をご利用ください。
🔒 ブラウザ内で完結・入力データはサーバーに送信されません
使い方
- 「PEMまたはJWK」欄に、変換したい鍵を貼り付けます。
- 入力がPEMかJWKかを自動で判定し、「変換結果」欄に反対の形式が表示されます。
- コピーするか、ファイルとして保存します。
注意事項
- 秘密鍵を貼り付けると画面上に平文で表示されます。共有端末や画面共有中は使わないでください。入力内容はこのブラウザ内でのみ処理され、保存もされません。
- 対応するPEMは BEGIN PUBLIC KEY(SPKI)と BEGIN PRIVATE KEY(PKCS#8)のみです。BEGIN RSA PRIVATE KEY(PKCS#1)や BEGIN EC PRIVATE KEY(SEC1)、パスフレーズで暗号化されたPEMは扱えません。OpenSSLで事前にPKCS#8へ変換してください。
- 対応する鍵はRSA、EC(P-256/P-384/P-521)、Ed25519です。secp256k1など、ブラウザのWeb Crypto APIが扱えない曲線には対応していません。Ed25519は新しめのブラウザでのみ使えます。
- JWK→PEMでは、dを含む場合は秘密鍵(PKCS#8)、含まない場合は公開鍵(SPKI)を出力します。alg・use・kidなどのメタ情報はPEMに含まれないため失われます。JWKS(keysの配列)は先頭の鍵だけを変換します。
用語解説
JWK
暗号鍵をJSONで表す形式(RFC 7517)です。kty(鍵の種類)とn・e・x・y・dなどの数値をBase64URLで持ちます。JWTの署名検証用公開鍵の配布(JWKS)などに使われます。
PEM / SPKI / PKCS#8
PEMはDER形式のバイナリをBase64とヘッダ行で包んだテキスト形式です。公開鍵はSPKI(SubjectPublicKeyInfo)、秘密鍵はPKCS#8という構造で格納します。
kty / crv
JWKの鍵の種類を示す項目です。ktyはRSA・EC・OKPのいずれかで、ECとOKPではcrvに曲線名(P-256、Ed25519など)が入ります。
よくある質問
「RSA PRIVATE KEY」や「EC PRIVATE KEY」のPEMは変換できますか?
できません。このツールはPKCS#8(「BEGIN PRIVATE KEY」)とSPKI(「BEGIN PUBLIC KEY」)のみ扱います。PKCS#1やSEC1形式は、先に openssl pkcs8 -topk8 -nocrypt などでPKCS#8に変換してください。
JWKからPEMにすると alg や kid が消えるのはなぜですか?
PEMは鍵の数値そのものだけを格納する形式で、alg(用途のアルゴリズム)・use・kidといったJWKのメタ情報を持てないためです。PEMからJWKに戻す際も、これらは自動では付きません。
どのアルゴリズムの鍵か指定しなくても変換できるのはなぜですか?
JWKは kty と crv から種類が分かります。PEMは内部のOIDから種類が決まるため、RSA・ECのP-256/P-384/P-521・Ed25519を順に読み込んで、成功したものをJWKにしています。
貼り付けた秘密鍵は送信・保存されますか?
いいえ。変換はブラウザ内のWeb Crypto APIだけで行い、サーバーへの送信も、入力内容のブラウザへの保存もしません。ただし画面には平文で表示されるため、画面共有中などはご注意ください。
このページをシェア
