Comparador de certificado y clave privada — prueba de firma, no una suposición
Comparador de certificado y clave privada
Pegue el certificado que usa un servidor y la clave privada que va a desplegar con él, y esta página responde a la pregunta con la que suele fallar un sitio desplegado: ¿proceden ambos del mismo par de claves? La respuesta no es una suposición basada solo en las longitudes de módulo o en las huellas: la página firma un desafío fijo con la clave privada y verifica esa firma con la clave pública que contiene el certificado. Si la verificación pasa, ambos pertenecen juntos; si falla, no servirá de nada editar la configuración para que funcionen. Ambas lecturas se muestran lado a lado con el algoritmo, el tamaño de clave, el identificador de clave del sujeto y la huella de la clave pública, y nada de lo que pegue sale del navegador.
1. Certificado o cadena
Pegue tantos bloques como quiera. Cada certificado se comprueba contra cada clave, así que una cadena más una clave le indica exactamente a qué certificado de la cadena pertenece esa clave; una sorpresa habitual en un servidor que sirve el certificado equivocado de un paquete. Se leen PEM, cuerpos base64 o hexadecimales y archivos PKCS#7 .p7b; el verificador de certificados audita el propio certificado una vez resuelta la clave.
2. Clave privada o clave pública
Se entienden PKCS#8 (BEGIN PRIVATE KEY), PKCS#1 (BEGIN RSA PRIVATE KEY), SEC1 (BEGIN EC PRIVATE KEY) y una clave pública SPKI sin cabeceras (BEGIN PUBLIC KEY), al igual que un archivo de clave pegado en base64 o hexadecimal. Una clave PKCS#8 cifrada (BEGIN ENCRYPTED PRIVATE KEY) no puede leerla un navegador, y así se indica, junto con el comando que elimina la contraseña.
nada comprobado todavía
El ejemplo es un certificado autofirmado y la clave privada que le corresponde, ambos creados para esta página y sin proteger nada. Sustituya la clave por cualquier otra para ver el otro veredicto, o pegue el bloque de clave pública en lugar del privado para ver la coincidencia de la clave pública.
Antes de pegar una clave privada en cualquier página web, piénselo dos veces. Esta página es un único archivo de JavaScript sin dependencias externas: no carga nada de ningún sitio y no hace ninguna petición, así que la clave se lee, se usa y se olvida dentro de esta pestaña. Aun así, eso es una promesa hecha por código que puede leer, no una garantía de una red que pueda ver: si maneja una clave de producción, trabaje sin conexión y considere que la comprobación más segura es el mismo comando openssl en su propio servidor. Una clave pegada aquí nunca se almacena, nunca se guarda en un archivo y nunca se envía a ningún sitio, tampoco mediante los botones de exportación, que escriben conclusiones sobre la clave, nunca la clave misma.
Por qué la firma es la respuesta. Dos archivos pueden parecerse y, aun así, no coincidir: en la mayoría de las guías las claves RSA se comparan por módulo, pero eso solo funciona para RSA, y una clave puede tener el módulo correcto con un exponente dañado o un relleno erróneo. Esta página demuestra el par de la misma forma que un handshake: firma un desafío fijo con la clave privada y lo verifica con la clave pública del certificado, de modo que el veredicto vale igual para RSA, ECDSA y Ed25519. Cuando solo se pega la mitad pública, se comparan los bytes de la clave pública con los del certificado, lo cual es igual de concluyente en cuanto a identidad, pero sin prueba de que alguien posea la mitad privada.
Lo que una coincidencia no le dice. Que la clave sea la que realmente carga el servidor, que el certificado sea de confianza, que el archivo de clave esté intacto en el disco, o que alguien no haya copiado la clave. Tampoco puede decir si ese es el certificado que recibirá un cliente, ya que un balanceador de carga o una CDN delante del sitio puede servir otro. Para comprobar lo que presenta realmente un servidor en directo, ejecute openssl s_client -connect example.com:443 -servername example.com -showcerts y pegue esa salida en el cuadro de certificados.
De dónde salen los archivos. El certificado es el que tiene configurado su servidor, o el que se exportó desde un navegador o se extrajo de un paquete .p7b. La clave privada es el archivo que lee el servidor web al arrancar, normalmente algo como privkey.pem o server.key. Si su clave está cifrada, descifre primero una copia con openssl pkcs8 -topk8 -nocrypt -in key.pem -out key-plain.pem, pegue ese archivo y luego bórrelo.
Informe de coincidencia
Todavía no hay nada comprobado. Pegue un certificado y una clave arriba y pulse Comprobar si coinciden. El veredicto aparece aquí con las pruebas que lo sustentan, y el informe puede copiarse o guardarse.
La misma comprobación con openssl, en su propio equipo
# clave pública dentro del certificado openssl x509 -in cert.pem -noout -pubkey | openssl pkey -pubin -outform DER | openssl sha256 # clave pública dentro de la clave privada openssl pkey -in key.pem -pubout | openssl pkey -pubin -outform DER | openssl sha256 # los dos resúmenes son iguales solo si el par pertenece junto # la forma antigua, solo para RSA: comparar módulos openssl x509 -in cert.pem -noout -modulus | openssl md5 openssl rsa -in key.pem -noout -modulus | openssl md5
La comparación de resúmenes funciona con cualquier tipo de clave y coincide con lo que esta página informa como huella de la clave pública, mientras que la comparación de módulos solo existe para RSA. Ninguna de las dos demuestra que alguien posea la mitad privada: la comprobación de firma sí lo hace, y por eso esta página la usa.
Qué contiene el informe. El veredicto, el par de lecturas del que procede (algoritmo, tamaño de clave, curva, identificador de clave del sujeto y huella de la clave pública del certificado y de la clave) y la prueba exacta que se realizó. El informe nunca contiene la clave privada: la clave se usa para generar una firma y no se escribe en el texto, en el JSON ni en el portapapeles. Lo que copie o guarde es seguro para adjuntarlo a un ticket; la clave que pegó no lo es, y debe considerar que el portapapeles es el único otro lugar donde existió.
Privacidad: el certificado y la clave se leen dentro de la pestaña, no se sube nada y la página no hace ninguna petición: no hay sondeo ni consulta alguna. Para crear un par coincidente use el generador de certificados autofirmados; para pedir un certificado para una clave que ya tiene, use el generador de CSR; para leer lo que contiene un certificado, use el decodificador de certificados.
🔒 Herramientas SSL y TLS
Utilidades de certificados y claves que se ejecutan íntegramente en su navegador.