0

JWK ⇄ PEM-Schlüsselkonverter

Konvertieren Sie kryptografische Schlüssel zwischen JWK- und PEM-Format mithilfe der echten Web-Krypto-API, dekodieren Sie Algorithmus/Kurve/Größe und berechnen Sie den RFC 7638 JWK-Fingerabdruck.

Buy Me a Coffee at ko-fi.com
Verarbeitung... 0%
Parsing-Schlüssel
Format konvertieren
Computer-Fingerabdruck
Fertig

Ergebnis

JSON Web Keys (JWK) und PEM-codierte Schlüssel werden in allen JWT-Bibliotheken, TLS-Tools und OAuth/OIDC-Konfigurationen austauschbar angezeigt, aber die manuelle Konvertierung zwischen den beiden erfordert eine Base64-Dekodierung von DER-Strukturen oder eine Neuformatierung von JSON – leicht kann man auf subtile Weise einen Fehler machen. Dieses Tool führt die Konvertierung mit der echten Web-Crypto-API des Browsers anstelle der Textmanipulation durch: Ein eingefügter PEM-Block wird mit crypto.subtle.importKey('spki'|'pkcs8', ...) importiert und mit exportKey('jwk', ...) als JWK erneut exportiert; Ein eingefügtes JWK wird mit importKey('jwk', ...) importiert und als SPKI oder PKCS8 DER erneut exportiert und dann in den richtigen PEM-Header verpackt. Da der Browser das Schlüsselmaterial selbst validiert und dekodiert, schlägt ein fehlerhafter Schlüssel oder eine nicht übereinstimmende Algorithmusauswahl lautstark fehl, anstatt stillschweigend Müll zu erzeugen.

Unterstützte Algorithmen sind RSA (RSASSA-PKCS1-v1_5), EC auf den P-256/P-384/P-521-Kurven und – sofern der Browser sie implementiert – Ed25519 und X25519. Die Browserunterstützung für Ed25519/X25519 in Web Crypto ist bei allen Engines immer noch inkonsistent. Anstatt also anhand der Benutzeragentenzeichenfolge zu raten, führt das Tool eine tatsächliche crypto.subtle.generateKey()-Prüfung für die ausgewählte Kurve aus und teilt Ihnen deutlich mit, ob sie hier nicht unterstützt wird, anstatt ein erfundenes Ergebnis zurückzugeben.

Bei jeder Konvertierung werden auch die echten Metadaten des Schlüssels dekodiert: bei RSA-Schlüsseln die Modulus-Bitlänge und der Hash-Algorithmus direkt aus dem CryptoKey-Objekt; für EC- und OKP-Schlüssel die benannte Kurve; und für jeden Schlüssel den RFC 7638 JWK-Fingerabdruck – ein SHA-256-Hash der erforderlichen JWK-Mitglieder, serialisiert in strenger lexikografischer Reihenfolge (e/kty/n für RSA, crv/kty/x/y für EC, crv/kty/x für OKP/Ed25519/X25519). Dieser Fingerabdruck wird von vielen Systemen als „Kind“-Identifikator eines Schlüssels verwendet, und eine falsche Reihenfolge der Mitglieder führt zu einem völlig anderen Hash, was genau die Art von Fehler ist, zu der eine manuell erstellte Implementierung anfällig ist.

Da alles über crypto.subtle in Ihrem eigenen Browser-Tab läuft, verlässt das private Schlüsselmaterial nie Ihr Gerät – es ist zu keinem Zeitpunkt der Konvertierung ein Server, kein Upload und kein externer API-Aufruf beteiligt.