0

Convertitore di chiavi JWK ⇄ PEM

Converti le chiavi crittografiche tra il formato JWK e PEM utilizzando la vera API Web Crypto, decodifica algoritmo/curva/dimensione e calcola l'identificazione personale JWK RFC 7638.

Buy Me a Coffee at ko-fi.com
Elaborazione... 0%
Chiave di analisi
Conversione del formato
Identificazione digitale informatica
Fatto

Risultato

Le chiavi Web JSON (JWK) e le chiavi con codifica PEM vengono visualizzate in modo intercambiabile nelle librerie JWT, negli strumenti TLS e nella configurazione OAuth/OIDC, ma la conversione manuale tra le due implica strutture DER con decodifica base64 o riformattazione JSON: è facile sbagliarsi leggermente. Questo strumento esegue la conversione con la vera Web Crypto API del browser invece della manipolazione del testo: un blocco PEM incollato viene importato con crypto.subtle.importKey('spki'|'pkcs8', ...) e riesportato come JWK con exportKey('jwk', ...); un JWK incollato viene importato con importKey('jwk', ...) e riesportato come SPKI o PKCS8 DER, quindi racchiuso nell'intestazione PEM corretta. Poiché il browser stesso convalida e decodifica il materiale della chiave, una chiave malformata o una selezione di algoritmo non corrispondente falliscono rumorosamente invece di produrre silenziosamente spazzatura.

Gli algoritmi supportati sono RSA (RSASSA-PKCS1-v1_5), EC sulle curve P-256/P-384/P-521 e, dove il browser li implementa, Ed25519 e X25519. Il supporto del browser per Ed25519/X25519 in Web Crypto è ancora incoerente tra i motori, quindi invece di indovinare dalla stringa dell'agente utente, lo strumento esegue un'effettiva sonda crypto.subtle.generateKey() per la curva selezionata e ti dice chiaramente se non è supportata qui, invece di restituire un risultato inventato.

Ogni conversione decodifica anche i metadati reali della chiave: per le chiavi RSA, la lunghezza in bit del modulo e l'algoritmo hash direttamente dall'oggetto CryptoKey; per le chiavi EC e OKP, la curva denominata; e per ogni chiave, l'identificazione personale JWK RFC 7638: un hash SHA-256 dei membri richiesti da JWK serializzati in rigoroso ordine lessicografico (e/kty/n per RSA, crv/kty/x/y per EC, crv/kty/x per OKP/Ed25519/X25519). Questa identificazione personale è ciò che molti sistemi utilizzano come identificatore "bambino" di una chiave e ottenere un ordine sbagliato dei membri produce un hash completamente diverso, che è esattamente il tipo di errore a cui è incline un'implementazione lanciata manualmente.

Poiché tutto viene eseguito tramite crypto.subtle nella scheda del tuo browser, il materiale della chiave privata non lascia mai il tuo dispositivo: non vi è alcun server, nessun caricamento e nessuna chiamata API esterna coinvolta in nessun momento della conversione.