Claves para producción: RSA vs ECC
En sistemas modernos, la elección de claves afecta seguridad, compatibilidad y rendimiento. RSA sigue siendo ultra compatible (TLS, JWT RS256, firmas clásicas), mientras que ECC suele ser más eficiente (claves más pequeñas, firmas rápidas). A nivel práctico, lo que más tiempo hace perder es el formato: PEM con encabezados incorrectos, saltos de línea, DER vs PEM, y conversiones para librerías específicas.
Esta herramienta te ayuda a generar pares de claves y validar si el material que recibiste (por ejemplo, una clave pública de un proveedor) es utilizable sin tener que instalar nada. Además calcula un fingerprint para comparar rápidamente si dos claves son la misma (muy útil cuando hay varios entornos y copias).
Examples prácticos con código
# OpenSSL - generar RSA 2048
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out private.pem
openssl pkey -in private.pem -pubout -out public.pem
# OpenSSL - ECC P-256
openssl ecparam -name prime256v1 -genkey -noout -out ec_private.pem
openssl ec -in ec_private.pem -pubout -out ec_public.pem
// Node.js - exportar clave a JWK
import { createPublicKey } from "crypto";
import fs from "fs";
const pem = fs.readFileSync("./public.pem", "utf8");
const jwk = createPublicKey(pem).export({ format: "jwk" });
console.log(jwk);
FAQ
¿Por qué mi PEM “parece bien” pero la librería lo rechaza?
Normalmente por encabezado incorrecto (PUBLIC KEY vs RSA PUBLIC KEY), por espacios, o por un PEM que realmente contiene un certificado X.509 y no una clave.
¿RSA 2048 es suficiente?
En la mayoría de escenarios sí. Si necesitas margen extra o firmas de larga vida, considera RSA 3072/4096 o ECC según compatibilidad.
¿Esto genera claves en el servidor?
No. Se generan en el navegador usando WebCrypto cuando está disponible (requiere HTTPS).