0

JWK ⇄ PEM-sleutelconverter

Converteer cryptografische sleutels tussen JWK- en PEM-formaat met behulp van de echte Web Crypto API, decodeer algoritme/curve/grootte en bereken de RFC 7638 JWK-vingerafdruk.

Buy Me a Coffee at ko-fi.com
Verwerken... 0%
Parseersleutel
Formaat converteren
Vingerafdruk computergebruik
Klaar

Resultaat

JSON Web Keys (JWK) en PEM-gecodeerde sleutels verschijnen afwisselend in JWT-bibliotheken, TLS-tooling en OAuth/OIDC-configuratie, maar handmatig converteren tussen de twee betekent base64-decodering van DER-structuren of het opnieuw formatteren van JSON – het is gemakkelijk om op subtiele wijze de fout in te gaan. Deze tool voert de conversie uit met de echte Web Crypto API van de browser in plaats van met tekstmanipulatie: een geplakt PEM-blok wordt geïmporteerd met crypto.subtle.importKey('spki'|'pkcs8', ...) en opnieuw geëxporteerd als JWK met exportKey('jwk', ...); een geplakte JWK wordt geïmporteerd met importKey('jwk', ...) en opnieuw geëxporteerd als SPKI of PKCS8 DER, en vervolgens verpakt in de juiste PEM-header. Omdat de browser zelf het sleutelmateriaal valideert en decodeert, mislukt een verkeerd gevormde sleutel of een niet-overeenkomende algoritmeselectie luidruchtig in plaats van stilzwijgend afval te produceren.

Ondersteunde algoritmen zijn RSA (RSASSA-PKCS1-v1_5), EC op de P-256/P-384/P-521-curven, en – waar de browser deze implementeert – Ed25519 en X25519. Browserondersteuning voor Ed25519/X25519 in Web Crypto is nog steeds inconsistent tussen verschillende motoren, dus in plaats van te raden op basis van de user-agentstring, voert de tool een daadwerkelijke crypto.subtle.generateKey()-test uit voor de geselecteerde curve en vertelt u duidelijk of deze hier niet wordt ondersteund, in plaats van een verzonnen resultaat te retourneren.

Bij elke conversie worden ook de echte metagegevens van de sleutel gedecodeerd: voor RSA-sleutels: de modulusbitlengte en het hash-algoritme rechtstreeks uit het CryptoKey-object; voor EC- en OKP-sleutels: de genoemde curve; en voor elke sleutel de RFC 7638 JWK-vingerafdruk - een SHA-256-hash van de vereiste leden van de JWK, geserialiseerd in strikte lexicografische volgorde (e/kty/n voor RSA, crv/kty/x/y voor EC, crv/kty/x voor OKP/Ed25519/X25519). Deze vingerafdruk is wat veel systemen gebruiken als de 'kid'-identificatie van een sleutel, en als de lidvolgorde verkeerd is, ontstaat er een geheel andere hash, wat precies het soort fout is waar een handgerolde implementatie gevoelig voor is.

Omdat alles via crypto.subtle op uw eigen browsertabblad loopt, verlaat het privésleutelmateriaal uw apparaat nooit. Er is op geen enkel moment bij de conversie sprake van een server, geen upload en geen externe API-oproep.