0

JWK ⇄ PEM Key Converter

Převádějte kryptografické klíče mezi formátem JWK a PEM pomocí skutečného rozhraní Web Crypto API, dekódujte algoritmus/křivku/velikost a vypočítejte otisk RFC 7638 JWK.

Buy Me a Coffee at ko-fi.com
Zpracování... 0%
Klíč analýzy
Konverze formátu
Výpočetní otisk palce
Hotovo

Výsledek

Webové klíče JSON (JWK) a klíče kódované PEM se zobrazují zaměnitelně napříč knihovnami JWT, nástroji TLS a konfigurací OAuth/OIDC, ale ruční převod mezi nimi znamená dekódování struktur DER base64 nebo přeformátování JSON – snadno se lehce zmýlíte. Tento nástroj provádí konverzi pomocí skutečného webového krypto API prohlížeče namísto manipulace s textem: vložený blok PEM je importován pomocí crypto.subtle.importKey('spki'|'pkcs8', ...) a reexportován jako JWK pomocí exportKey('jwk', ...); vložený JWK je importován pomocí importKey('jwk', ...) a znovu exportován jako SPKI nebo PKCS8 DER, poté zabalen do správné hlavičky PEM. Protože prohlížeč sám ověřuje a dekóduje klíčový materiál, chybně vytvořený klíč nebo nesprávný výběr algoritmu hlasitě selže místo toho, aby tiše produkoval odpad.

Podporované algoritmy jsou RSA (RSASSA-PKCS1-v1_5), EC na křivkách P-256/P-384/P-521 a – tam, kde je prohlížeč implementuje – Ed25519 a X25519. Podpora prohlížeče pro Ed25519/X25519 ve Web Crypto je stále nekonzistentní mezi enginy, takže místo hádání z řetězce uživatelského agenta nástroj spustí skutečnou sondu crypto.subtle.generateKey() pro vybranou křivku a jasně vám řekne, pokud zde není podporována, místo aby vrátil vyrobený výsledek.

Každá konverze také dekóduje skutečná metadata klíče: pro klíče RSA modulovou bitovou délku a algoritmus hash přímo z objektu CryptoKey; pro klíče EC a OKP pojmenovaná křivka; a pro každý klíč otisk RFC 7638 JWK — hash SHA-256 požadovaných členů JWK serializovaný v přísném lexikografickém pořadí (e/kty/n pro RSA, crv/kty/x/y pro EC, crv/kty/x pro OKP/Ed25519/X25519). Tento otisk je to, co mnoho systémů používá jako „dětský“ identifikátor klíče a chybné pořadí členů vytváří úplně jiný hash, což je přesně ten druh chyby, ke kterému je vlastnoručně vytvořená implementace náchylná.

Protože vše probíhá přes crypto.subtle na vaší vlastní kartě prohlížeče, materiál soukromého klíče nikdy neopustí vaše zařízení – v žádném okamžiku převodu není zapojen žádný server, žádné nahrávání ani žádné externí volání API.