JWK ⇄ Conversor de chave PEM
Converta chaves criptográficas entre os formatos JWK e PEM usando a API Web Crypto real, decodifique algoritmo/curva/tamanho e calcule a impressão digital RFC 7638 JWK.
Resultado
JSON Web Keys (JWK) e chaves codificadas em PEM aparecem de forma intercambiável em bibliotecas JWT, ferramentas TLS e configuração OAuth/OIDC, mas converter entre os dois manualmente significa decodificar estruturas DER em base64 ou reformatar JSON – fácil de errar sutilmente. Esta ferramenta faz a conversão com a API Web Crypto real do navegador em vez da manipulação de texto: um bloco PEM colado é importado com crypto.subtle.importKey('spki'|'pkcs8', ...) e reexportado como JWK com exportKey('jwk', ...); um JWK colado é importado com importKey('jwk', ...) e reexportado como SPKI ou PKCS8 DER e, em seguida, agrupado no cabeçalho PEM correto. Como o próprio navegador valida e decodifica o material da chave, uma chave malformada ou uma seleção de algoritmo incompatível falha ruidosamente em vez de produzir lixo silenciosamente.
Os algoritmos suportados são RSA (RSASSA-PKCS1-v1_5), EC nas curvas P-256/P-384/P-521 e — onde o navegador os implementa — Ed25519 e X25519. O suporte do navegador para Ed25519/X25519 no Web Crypto ainda é inconsistente entre os mecanismos, portanto, em vez de adivinhar a partir da string do agente do usuário, a ferramenta executa uma sonda crypto.subtle.generateKey() real para a curva selecionada e informa claramente se ela não é suportada aqui, em vez de retornar um resultado fabricado.
Cada conversão também decodifica os metadados reais da chave: para chaves RSA, o comprimento do bit do módulo e o algoritmo hash diretamente do objeto CryptoKey; para chaves EC e OKP, a curva nomeada; e para cada chave, a impressão digital RFC 7638 JWK - um hash SHA-256 dos membros exigidos do JWK serializados em ordem lexicográfica estrita (e/kty/n para RSA, crv/kty/x/y para EC, crv/kty/x para OKP/Ed25519/X25519). Essa impressão digital é o que muitos sistemas usam como identificador "criança" de uma chave, e errar na ordem dos membros produz um hash totalmente diferente, que é exatamente o tipo de erro a que uma implementação rolada manualmente está sujeita.
Como tudo é executado através do crypto.subtle na sua própria guia do navegador, o material da chave privada nunca sai do seu dispositivo – não há servidor, upload e nenhuma chamada de API externa envolvida em qualquer ponto da conversão.