0

JWK ⇄ PEM Key Converter

Konverter kryptografiske nøkler mellom JWK- og PEM-format ved å bruke den ekte Web Crypto API, dekode algoritme/kurve/størrelse og beregne RFC 7638 JWK-tommelavtrykket.

Buy Me a Coffee at ko-fi.com
Behandler... 0%
Parsing nøkkel
Konvertering av format
Datamaskin-tommelavtrykk
Ferdig

Resultat

JSON Web Keys (JWK) og PEM-kodede nøkler vises om hverandre på tvers av JWT-biblioteker, TLS-verktøy og OAuth/OIDC-konfigurasjon, men å konvertere mellom de to for hånd betyr base64-dekoding av DER-strukturer eller omformatering av JSON – lett å få subtilt feil. Dette verktøyet utfører konverteringen med nettleserens ekte Web Crypto API i stedet for tekstmanipulering: en limt PEM-blokk importeres med crypto.subtle.importKey('spki'|'pkcs8', ...) og re-eksporteres som JWK med exportKey('jwk', ...); en innlimt JWK importeres med importKey('jwk', ...) og re-eksporteres som SPKI eller PKCS8 DER, deretter pakket inn i riktig PEM-overskrift. Fordi nettleseren selv validerer og dekoder nøkkelmaterialet, feiler en feil utformet nøkkel eller et feilaktig algoritmevalg høyt i stedet for å produsere søppel i det stille.

Støttede algoritmer er RSA (RSASSA-PKCS1-v1_5), EC på P-256/P-384/P-521-kurvene, og – der nettleseren implementerer dem – Ed25519 og X25519. Nettleserstøtte for Ed25519/X25519 i Web Crypto er fortsatt inkonsekvent på tvers av motorer, så i stedet for å gjette fra brukeragentstrengen, kjører verktøyet en faktisk crypto.subtle.generateKey()-probe for den valgte kurven og forteller deg tydelig om den ikke støttes her, i stedet for å returnere et fabrikkert resultat.

Hver konvertering dekoder også nøkkelens virkelige metadata: for RSA-nøkler, modulusbitlengden og hashalgoritmen rett fra CryptoKey-objektet; for EC- og OKP-taster, den navngitte kurven; og for hver nøkkel, RFC 7638 JWK thumbprint - en SHA-256-hash av JWKs nødvendige medlemmer serialisert i streng leksikografisk rekkefølge (e/kty/n for RSA, crv/kty/x/y for EC, crv/kty/x for OKP/Ed25519/X25519). Dette tommelfingeravtrykket er det mange systemer bruker som en nøkkels "barn"-identifikator, og å få medlemsrekkefølgen feil produserer en helt annen hash, som er akkurat den typen feil en håndrullet implementering er utsatt for.

Fordi alt går gjennom crypto.subtle i din egen nettleserfane, forlater aldri privat nøkkelmateriale enheten din – det er ingen server, ingen opplasting og ingen ekstern API-kall involvert på noe tidspunkt i konverteringen.