Decodificador de CSR (PKCS#10)
Descodifica en tu navegador una solicitud de firma de certificado PKCS#10 y muestra lo que estás a punto de enviar de verdad a una autoridad de certificación. Obtienes el sujeto como nombre distinguido, los nombres alternativos del sujeto, el algoritmo y el tamaño de la clave pública, el algoritmo de firma, la contraseña de desafío si la lleva, y las extensiones que la solicitud pide a la CA que incluya. También verifica la firma de la propia solicitud. Una CSR está autofirmada con la clave privada que corresponde a la pública que contiene —eso es lo que demuestra a una CA que quien la envía posee la clave—, así que la comprobación no necesita nada más que la solicitud, y un fallo significa que los bytes se alteraron después de firmar o que la clave no coincide. El aviso que más conviene tener es el del nombre alternativo del sujeto. Los navegadores dejaron de honrar el Common Name para casar nombres de host en 2017, así que una CSR que solo nombra su host en el CN produce un certificado que falla en todos los clientes modernos, y el error es invisible hasta que el certificado está instalado. Esto señala una solicitud sin ningún SAN, y también el caso más sutil en que hay un CN que falta en la lista de SANs, lo que cubre un conjunto de nombres distinto del que pretendías. También se señalan la RSA por debajo de 2048 bits y las firmas SHA-1, porque hoy toda CA pública las rechaza. Si pegas una clave privada por error, se niega a procesarla. No se sube nada.
Cómo usar
- Pega la CSR, o suelta el archivo .csr o .pem sobre la caja. Empieza por -----BEGIN CERTIFICATE REQUEST-----.
- Revisa primero la lista de SANs: todo nombre de host que el certificado deba cubrir tiene que aparecer ahí, incluido el del Common Name.
- Confirma que la autofirma verifica; si no lo hace, regenera la solicitud en lugar de enviarla.
- Lee el tamaño de clave y el algoritmo de firma: una CA pública exige al menos RSA de 2048 bits (o cualquier curva EC) y una firma SHA-256 o mejor.
- Resuelve lo que salga en ámbar antes de enviarla, porque un rechazo de la CA suele costar un viaje de ida y vuelta de horas.
Preguntas frecuentes
- ¿Por qué necesita SAN un certificado si ya tiene Common Name?
- Porque los clientes dejaron de mirar el Common Name. El RFC 2818 lo declaró obsoleto para casar nombres de host en el año 2000, Chrome retiró el soporte en su versión 58 en 2017 y los demás navegadores siguieron; los requisitos base del CA/Browser Forum obligan hoy a la CA a poner todos los nombres en la extensión subjectAltName de todas formas. Una CSR cuyo nombre de host solo aparece en el CN será rechazada por la CA o producirá un certificado que todo navegador moderno rehúsa con ERR_CERT_COMMON_NAME_INVALID. Las herramientas siguen mostrando el CN, que es justo lo que hace fácil pasar por alto el error.
- ¿Qué demuestra la autofirma de una CSR?
- Que quien produjo la solicitud posee la clave privada correspondiente a la pública que contiene. La solicitud se firma con esa clave, sobre su propio contenido, así que una CA puede verificarla sin nada más: esto es lo que impide que alguien envíe una CSR con tu clave pública y obtenga un certificado a tu nombre. No demuestra nada sobre la propiedad del dominio, que la CA comprueba aparte. Si la firma no verifica, el archivo se alteró después de firmarse, lo que normalmente significa que se corrompió por el camino o se editó a mano.
- ¿Es seguro pegar una CSR aquí?
- Sí. Una CSR solo lleva información pública —los nombres que solicitas y la mitad pública de tu par de claves— y de todos modos está pensada para entregarse a una CA. Aun así, esta página no la envía a ninguna parte: tanto el análisis ASN.1 como la verificación de la firma se ejecutan en tu navegador mediante WebCrypto, lo que puedes confirmar cargando la página, desconectándote de la red y pegando una solicitud. La clave privada es otra cosa completamente: no la pegues en ningún sitio, y si lo haces aquí, la herramienta la rechaza.
- ¿Por qué a veces no se comprueba la firma?
- Porque verificar exige que el navegador importe la clave pública, y WebCrypto admite un conjunto fijo de algoritmos. RSA y ECDSA sobre las curvas NIST funcionan en todas partes; Ed25519 funciona en navegadores recientes y se omite en los antiguos. Cuando el tipo de clave no se puede importar, la herramienta dice que la firma no se comprobó en lugar de dar a entender que pasó: una firma sin comprobar y una válida son cosas muy distintas, y confundirlas sería lo único de verdad peligroso que esta herramienta podría hacer.
- ¿Puedo descodificar aquí también un certificado?
- No: un certificado y una solicitud de firma son estructuras distintas, y esta herramienta lee solo solicitudes PKCS#10. Una CSR es lo que envías a una CA; un certificado es lo que vuelve, y lleva un emisor, una ventana de validez y la firma de la CA, nada de lo cual existe en una solicitud. Pega un bloque -----BEGIN CERTIFICATE----- en el decodificador de certificados.
- ¿Para qué sirve la contraseña de desafío?
- Es un atributo opcional de la especificación PKCS#10 original, pensado como secreto compartido que te permitiría pedir después a la CA que revoque el certificado. Hoy casi ninguna CA pública lo usa —la revocación se gestiona desde la cuenta con la que te autenticaste— pero algunos flujos empresariales y de inscripción SCEP todavía lo exigen, y los servicios de certificados de Microsoft lo leen. Si está puesto, esta herramienta lo muestra, lo que conviene saber porque viaja en claro dentro de la solicitud.
Herramientas relacionadas
Inspector de almacenes PKCS#12
Abre un .p12 o .pfx en el navegador: MAC y cifrados antes de la contraseña, y luego la cadena, la clave privada y si se corresponden.
Decodificador de CRL (X.509)
Lee una lista de revocación en tu navegador: emisor, número de CRL, ventana de validez, cada serie revocada con su motivo y la firma.
Decodificador de OCSP (respuesta y petición)
Decodifica una respuesta o petición OCSP en el navegador: estado, respondedor, vigencia, nonce, motivo de revocación y certificados incluidos.
Decodificador de certificados SSL (X.509)
Pega un certificado PEM y léelo: sujeto, emisor, caducidad, SAN, clave, huellas y extensiones, decodificado en tu navegador.
Decodificador ASN.1 / DER
Pega cualquier estructura DER —PEM, base64 o hex— y mira su árbol ASN.1: desplazamientos, etiquetas, longitudes y valores decodificados.
JSON → Interface TypeScript
Genera interfaces TypeScript desde cualquier muestra de JSON — los tipos se infieren recursivamente y se nombran según cada clave.