0

JWK ⇄ PEM-nøglekonverter

Konverter kryptografiske nøgler mellem JWK og PEM med browserens rigtige Web Crypto API, dekodér algoritme/kurve/størrelse, og beregn RFC 7638 JWK-thumbprint.

🔒 Behandles helt i din browser - intet, du indtaster her, bliver nogensinde uploadet.

Behandler... 0%
Fortolker nøgle
Konverterer format
Beregner thumbprint
Færdig

Resultat

JSON Web Keys (JWK) og PEM-kodede nøgler optræder side om side på tværs af JWT-biblioteker, TLS-værktøjer og OAuth/OIDC-konfiguration, men at konvertere mellem de to i hånden betyder base64-afkodning af DER-strukturer eller omformatering af JSON – let at tage fejl af i det små. Dette værktøj udfører konverteringen med browserens rigtige Web Crypto API i stedet for tekstmanipulation: en indsat PEM-blok importeres med crypto.subtle.importKey('spki'|'pkcs8', ...) og eksporteres igen som JWK med exportKey('jwk', ...); en indsat JWK importeres med importKey('jwk', ...) og eksporteres igen som SPKI- eller PKCS8-DER, og pakkes derefter ind i den korrekte PEM-header. Fordi browseren selv validerer og afkoder nøglematerialet, råber en ugyldig nøgle eller et forkert algoritmevalg op i stedet for lydløst at producere affald.

Understøttede algoritmer er RSA (RSASSA-PKCS1-v1_5), EC på kurverne P-256/P-384/P-521 samt – der hvor browseren implementerer dem – Ed25519 og X25519. Browserens understøttelse af Ed25519/X25519 i Web Crypto er stadig uensartet på tværs af motorer, så i stedet for at gætte ud fra user-agent-strengen udfører værktøjet en reel crypto.subtle.generateKey()-sondering for den valgte kurve og fortæller dig ligeud, hvis den ikke er understøttet her, frem for at returnere et fabrikeret resultat.

Enhver konvertering afkoder også nøglens reelle metadata: for RSA-nøgler hentes modulus-bitlængden og hash-algoritmen direkte fra CryptoKey-objektet; for EC- og OKP-nøgler hentes den navngivne kurve; og for hver nøgle beregnes RFC 7638 JWK-thumbprint – en SHA-256-hash af JWK'ens påkrævede medlemmer serialiseret i streng leksikografisk rækkefølge (e/kty/n for RSA, crv/kty/x/y for EC, crv/kty/x for OKP/Ed25519/X25519). Dette thumbprint er, hvad mange systemer bruger som en nøgles kid-identifikator, og en forkert medlemsrækkefølge giver en helt anden hash, hvilket netop er den slags fejl, en håndrullet implementation er tilbøjelig til at begå.

Fordi alt kører gennem crypto.subtle i din egen browserfane, forlader privat nøglemateriale aldrig din enhed – der er ingen server, ingen upload og intet eksternt API-kald involveret på noget tidspunkt i konverteringen.