Convertitore di chiavi JWK ⇄ PEM
Converti chiavi crittografiche tra formato JWK e PEM utilizzando la vera Web Crypto API, decodifica algoritmo/curva/dimensione e calcola il thumbprint JWK RFC 7638.
🔒 Elaborato interamente nel tuo browser: nulla di ciò che inserisci qui verrà mai caricato.
Risultato
Le JSON Web Key (JWK) e le chiavi in formato PEM compaiono in modo intercambiabile nelle librerie JWT, negli strumenti TLS e nella configurazione OAuth/OIDC, ma convertire manualmente tra i due formati significa decodificare in base64 strutture DER o riformattare JSON — facile sbagliare in modo subdolo. Questo strumento esegue la conversione utilizzando la vera Web Crypto API del browser invece della manipolazione testuale: 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 DER SPKI o PKCS8, quindi racchiuso nell’header PEM corretto. Poiché il browser stesso convalida e decodifica il materiale della chiave, una chiave malformata o una selezione errata dell’algoritmo produce un errore evidente invece di generare dati errati in silenzio.
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 disomogeneo tra i vari motori, quindi invece di dedurlo dalla stringa user agent, lo strumento esegue una verifica reale con crypto.subtle.generateKey() per la curva selezionata e indica chiaramente se non è supportata, anziché restituire un risultato artefatto.
Ogni conversione decodifica anche i metadati reali della chiave: per le chiavi RSA, la lunghezza in bit del modulo e l’algoritmo di hash direttamente dall’oggetto CryptoKey; per le chiavi EC e OKP, la curva con nome; e per ogni chiave, il thumbprint JWK RFC 7638 — un hash SHA-256 dei membri obbligatori della JWK serializzati in ordine lessicografico stretto (e/kty/n per RSA, crv/kty/x/y per EC, crv/kty/x per OKP/Ed25519/X25519). Questo thumbprint è ciò che molti sistemi usano come identificatore "kid" della chiave, e un ordine errato dei membri produce un hash completamente diverso, che è esattamente il tipo di errore a cui è soggetta un’implementazione fatta a mano.
Poiché tutto viene eseguito tramite crypto.subtle nella scheda del proprio browser, il materiale della chiave privata non lascia mai il dispositivo — non c’è alcun server, nessun upload e nessuna chiamata API esterna coinvolta in nessun punto della conversione.