Generador de certificados autofirmados
CifradoTodo se ejecuta en tu navegador: no se sube nada
Genera un par de claves RSA y un certificado X.509 autofirmado para desarrollo local o pruebas internas por HTTPS. Todo ocurre en el navegador: la clave privada la crea `crypto.subtle.generateKey`, existe solo en esta salida y no pasa por ningún servidor. ⚠️ Dos cosas hay que decir sin rodeos: ningún navegador ni sistema operativo confía en un certificado autofirmado, así que servirlo al público recibe a los visitantes con una página de advertencia alarmante; para algo real usa un certificado de una CA de confianza. Y no subas nunca la clave privada al repositorio: es tu identidad. El certificado lleva una extensión SAN con el CN dentro, y eso importa, porque Chrome ignora por completo el Common Name desde la versión 58 y compara solo con el SAN, así que un certificado con solo CN no conecta en un navegador moderno.
Funciones
- Genera en local un par de claves RSA y un certificado X.509 v3 autofirmado
- Incluye una extensión SAN (subjectAltName): lo único que comprueban los navegadores modernos
- Claves de 1024 / 2048 / 3072 / 4096 bits y validez de 1 día a 10 años
- Hash de firma a elegir: SHA-256 (el más compatible), SHA-384 o SHA-512
- La clave privada y el certificado salen como PEM estándar, listos para nginx, Node o Python
- El certificado se arma como ASN.1 DER a mano (los navegadores no pueden emitir uno) y se ha verificado que OpenSSL lo analiza
- La clave privada nunca sale del navegador: sin subidas ni registros
Cómo se usa
- Rellena el nombre común (`localhost` para desarrollo local)
- Si hace falta, ajusta la organización, la validez, el tamaño de clave y el hash de firma
- Haz clic en Ejecutar: 1024 / 2048 bits tardan un par de cientos de milisegundos; 3072 / 4096, unos segundos (no se ha colgado)
- Copia los dos bloques PEM y guárdalos en archivos separados
Preguntas frecuentes
- ¿Por qué el navegador me sigue avisando?
- Porque un certificado autofirmado no está en ningún almacén de confianza. La raíz de la cadena de confianza es la lista de CA integrada en tu sistema operativo y tu navegador; un certificado autofirmado actúa como su propia CA, la cadena no enlaza y el aviso es inevitable. Para silenciarlo en local hay que importar este certificado en el almacén de raíces de confianza del sistema (Llavero en macOS, Administrador de certificados en Windows, según la distribución en Linux) — y solo en tu propia máquina de desarrollo, nunca en la de otra persona.
- ¿Por qué el certificado necesita un SAN? ¿No bastaba el CN?
- Eso era cierto antes de 2017. Desde Chrome 58, el Common Name se ignora por completo y el nombre de host se compara solo con subjectAltName, una práctica que la RFC 6125 ya exigía desde mucho antes. Un certificado con solo `CN=localhost` y sin SAN se juzga «el nombre no coincide» en cualquier navegador mayoritario actual, y el error solo dice que el certificado está mal, lo que se lee fácilmente como un fallo de firma. Esta herramienta escribe el CN también en el SAN.
- ¿Es segura la clave privada generada?
- La clave viene de `crypto.subtle.generateKey` del navegador, que usa la fuente aleatoria criptográficamente segura del sistema, así que la clave en sí es sólida. El riesgo no está en la generación, sino en dónde la pones: no la subas a Git (un commit la deja en el historial para siempre; borrarla después no sirve de nada), no la incrustes en imágenes de contenedor, no la pegues en un chat. En una máquina de desarrollo puedes borrarla y regenerarla cuando quieras: tarda segundos.
- ¿Qué tamaño de clave y hash de firma elijo?
- Para desarrollo local basta con 2048 bits + SHA-256: la máxima compatibilidad y rápida de generar. 1024 bits ya no se considera seguro y pertenece solo a clientes antiguos con los que haya que interoperar; 3072 / 4096 resisten mejor la factorización futura, pero tardan segundos en generarse y ralentizan el handshake. Sobre el hash, SHA-256 lo acepta prácticamente cualquier cliente, mientras que SHA-384 / SHA-512 dan un digest más largo y teóricamente más fuerte que algún cliente antiguo puede no admitir; en caso de duda, quédate con SHA-256.
Herramientas relacionadas
RSA
CifradoCifra, descifra, firma y verifica con claves PEM RSA, o genera un par de 1024–4096 bits. Lee SPKI, PKCS#8 y PKCS#1. Todo en local.
Hash
CifradoCalcula resúmenes MD5, SHA-1, SHA-256, SHA-512 o MD4 de cualquier texto, en bytes UTF-8 para que coincidan con openssl. En tu navegador.
Bcrypt
CifradoGenera hashes bcrypt ($2y$) o comprueba una contraseña contra uno existente. El factor de coste es ajustable y todo se calcula en tu navegador.
Base64
CifradoConvierte texto a Base64 y al revés, con UTF-8 correcto para acentos, chino y emoji. Todo se ejecuta en tu navegador: no se sube nada.
Codificar URL
CifradoEscapa texto a la forma %XX y lo devuelve, tratando una URL completa y un valor de parámetro como trabajos distintos. Todo en tu navegador.
Entidades HTML
CifradoConvierte < > & y las comillas en entidades HTML y las devuelve en una sola pasada, así que &lt; da <, no un ángulo. En tu navegador.