Decodificador de certificados y PEM
Decodifica certificados X.509 y solicitudes de firma desde PEM: sujeto, emisor, validez, nombres alternativos, extensiones y huellas.
Pegue PEM arriba y se decodificará aquí.
Qué hace esta herramienta
Un certificado llega como un bloque de Base64 entre dos líneas de guiones, y no hay forma de saber nada de él mirándolo. Esto lo decodifica: a quién se emitió y quién lo emitió, cuándo caduca, qué nombres de host cubre, qué clave contiene y todas las extensiones que lleva. Pegue una cadena completa y cada certificado se comprueba contra el siguiente.
Todo se ejecuta en su navegador. Aquí importa más que en la mayoría de las herramientas: la alternativa suele ser pegar un certificado de producción en el servidor de otra persona, o acordarse de la invocación de openssl, cosa que casi nadie hace.
PEM es solo el envoltorio
Los guiones y el Base64 son embalaje. Dentro hay DER, una codificación binaria de una estructura llamada ASN.1, y la etiqueta entre los guiones dice qué estructura esperar:
CERTIFICATE un certificado X.509 emitido CERTIFICATE REQUEST una CSR: lo que pidió a una CA PUBLIC KEY una clave suelta, sin identidad PRIVATE KEY la mitad secreta, rechazada aquí
El mismo certificado puede llegar también como DER en crudo en un archivo .cer o .crt, sin guiones y sin Base64. Si un archivo se abre como ruido binario en vez de texto, eso es lo que es; pásalo antes a Base64, o expórtalo como PEM.
Qué hay realmente en un certificado
Los campos básicos son los mismos en todos los certificados emitidos:
- Sujeto: de quién trata el certificado. Para un sitio web hoy suele ser solo un nombre común, y a menudo nada más.
- Emisor: la autoridad de certificación que lo firmó. Su nombre de sujeto aparece literalmente como emisor de todo lo que firma, y eso es lo que hace posible comprobar la cadena.
- Validez: dos instantes absolutos, siempre en UTC. Esta herramienta muestra ambos y calcula cuánto queda en su navegador, porque la máquina que generó esta página no tiene ni idea de cuándo la está leyendo usted.
- Número de serie: único por emisor, y el identificador que se usa cuando se revoca un certificado.
- Algoritmo de firma: con qué firmó el emisor, por ejemplo SHA-256 con ECDSA.
- Clave pública: el tipo y el tamaño. En RSA es la longitud en bits del módulo; en EC es una propiedad de la curva nombrada, así que P-256 son siempre 256 bits.
Un campo que la gente espera y ya no encuentra: el nombre común del sujeto no es lo que comprueban los navegadores. Hace años que se ignora para emparejar el nombre de host. Lo que cuenta es la extensión de nombres alternativos, más abajo.
Las extensiones que deciden si funciona
Un certificado puede llevar cualquier número de extensiones. Cinco determinan si de verdad será aceptado, y esta herramienta las decodifica por completo:
- Nombres alternativos del sujeto: los nombres de host, direcciones IP o de correo para los que el certificado es válido. Es el campo que comprueban los navegadores, y un certificado cuyos nombres alternativos no incluyan el que usted escribió será rechazado por correcto que sea todo lo demás.
- Restricciones básicas: si es una autoridad de certificación y cuántos intermedios pueden situarse por debajo. Un certificado final marcado como CA, o al revés, rompe la cadena.
- Uso de clave: para qué puede emplearse la clave en absoluto: firmar, cifrar claves, firmar certificados. Casi siempre marcada como crítica, lo que obliga al software a rechazar el certificado en lugar de ignorar un uso que no entiende.
- Uso extendido de clave: el propósito: servidor TLS, cliente TLS, firma de código, correo. Un certificado sin autenticación de servidor TLS no servirá un sitio web, y esa es una sorpresa frecuente en certificados emitidos para otra cosa.
- Identificadores de clave del sujeto y de la autoridad: hashes cortos que permiten al software emparejar rápidamente un certificado con su emisor cuando varios comparten nombre.
Cualquier otra extensión aparece con su nombre cuando se conoce, su OID y si está marcada como crítica. Nada se descarta en silencio: una extensión que esta herramienta no decodifica sigue apareciendo, para que se vea que está ahí.
Cadenas, y qué significa aquí «continua»
Un servidor casi nunca envía un solo certificado. Envía el suyo más los intermedios necesarios para llegar a una raíz en la que el cliente ya confía. El orden importa y el archivo suele llamarse fullchain.pem:
bloque 1 final subject: example.com issuer: Example CA R3 bloque 2 intermedio subject: Example CA R3 issuer: Example Root bloque 3 raíz a menudo se omite: el cliente ya la tiene
Cada certificado nombra a su emisor, y el certificado siguiente debería tener exactamente ese nombre como sujeto. Esta herramienta compara esos dos nombres byte a byte y dice si coinciden. Es la única relación comprobable sin conexión, y detecta los dos fallos que explican la mayoría de los problemas de cadena: un intermedio omitido y bloques pegados en el orden equivocado.
Esos fallos tienen un síntoma característico. Los navegadores de escritorio a menudo tapan un intermedio ausente descargándolo ellos mismos, así que el sitio se ve bien en su portátil y falla en un teléfono, en una app móvil o desde curl. Si eso describe lo que está depurando, pegue aquí primero la cadena completa.
Lo que esta herramienta no le dice
No verifica firmas, y no puede. Comprobar que un certificado fue realmente firmado por su emisor necesita la clave pública del emisor; decidir si hay que creer a ese emisor necesita un almacén de confianza. Un archivo pegado no aporta ninguno de los dos. Tampoco puede comprobar la revocación, que exige una petición de red a la CA.
Así que «la cadena es continua» aquí significa que los nombres encajan, no que la cadena sea válida. Una cadena de certificados falsificados encajaría a la perfección. Para lo que sirve la comprobación es para encontrar errores estructurales en su propia configuración, que es justo lo que la gente está mirando cuando pega una cadena en un decodificador.
Huellas y claves privadas
La huella SHA-256 es un hash del certificado entero, y es lo que se compara con un valor que alguien le dio o con un pin. Fíjese en qué identifica: el certificado, no la clave que contiene. Renovar un certificado con la misma clave produce una huella distinta, y esa es la razón habitual de que un pin se rompa al renovar. La huella SHA-1 también se muestra porque las herramientas y consolas antiguas la siguen imprimiendo, solo para identificar; SHA-1 no tiene nada que hacer firmando nada.
Las claves privadas se reconocen y se rechazan. Nada de lo que se pega aquí sale de su navegador, así que el rechazo no va de esta página: va de que pegar una clave privada en un formulario web es una costumbre que conviene no adquirir, y el próximo sitio que se lo pida puede no ejecutarse en local. Si necesita comprobar que una clave y un certificado van juntos, compare la clave pública del certificado con la derivada de la clave, en local.
Preguntas frecuentes
- ¿Dice esto si mi certificado es de confianza?
- No. La confianza depende de un almacén de confianza y de una comprobación de firma, y ninguna de las dos es posible desde un archivo pegado. Informa de lo que el certificado dice de sí mismo y de si los nombres de una cadena encajan.
- Mi sitio funciona en Chrome en el portátil pero falla en el móvil. ¿Qué miro?
- Casi siempre un intermedio ausente. Los navegadores de escritorio suelen descargar ellos mismos el certificado que falta y ocultan el problema; otros clientes no. Pegue aquí su cadena completa: si el enlace entre dos certificados aparece como roto, ahí está el hueco.
- ¿Por qué el nombre común no coincide con mi sitio?
- Porque no es lo que se comprueba. El emparejamiento del nombre de host usa la extensión de nombres alternativos, y así lleva años. Mire la fila de nombres alternativos: si el nombre de host no está ahí, el certificado no lo cubre, diga lo que diga el nombre común.
- ¿Por qué no decodifica mi clave privada?
- A propósito. Nada de lo que pegue sale de su navegador, pero pegar claves privadas en páginas web es una costumbre que conviene evitar, y esta herramienta se niega a enseñarla. Los certificados y las solicitudes de firma no contienen secretos y se decodifican con normalidad.
- ¿Qué diferencia hay entre un certificado y una CSR?
- Una CSR es lo que se envía a una autoridad de certificación: su nombre de sujeto, su clave pública y las extensiones que solicita, firmado por usted. Un certificado es lo que vuelve, con el nombre de la propia CA como emisor, una ventana de validez y un número de serie. Esta herramienta decodifica ambos.
- ¿Se envía mi certificado a algún sitio?
- No. El análisis, la decodificación y las huellas se calculan en su navegador; nada de lo que pegue sale de su dispositivo.