Dónde viven n, e, d, p y q de RSA en un archivo de clave VPN
n, e, d, p y q están dentro de una sola estructura, no en nombres de archivo. Lea una clave RSA de VPN con OpenSSL y emparéjela con su certificado sin imprimir secretos.
Las letras de una explicación de RSA nombran campos dentro de un objeto, no archivos que reparte una herramienta PKI. Un archivo de clave privada contiene una estructura cuyos primeros campos son públicos y cuyos campos posteriores nunca deben salir de la máquina que termina el túnel. Entre esos dos hechos están casi todas las preguntas prácticas sobre qué archivo responde a qué pregunta. Este manual lee primero la estructura y después los comandos que la inspeccionan sin derramarla.
Confirme que la clave es RSA antes de buscar primos
Un certificado demuestra que existe alguna clave y que fue firmada; no demuestra que la clave sea RSA. Los sistemas pueden construirse sobre curvas elípticas o Ed25519, y la misma disposición de directorios sirve para todos. Compruebe el algoritmo antes de empezar a buscar factores primos que nunca estuvieron ahí.
Estos tres comandos de solo lectura responden a la pregunta y registran la versión de la herramienta.
openssl version
openssl x509 -in vpn-client.crt -noout -text
openssl pkey -in vpn-client.key -noout -text
La versión importa porque los nombres de opción se han movido entre versiones principales. En la salida del certificado, busque la línea del algoritmo de clave pública y el tamaño de la clave; en la salida de la clave, una clave RSA imprime un módulo y un exponente público. Una clave de curva elíptica imprime en su lugar una curva con nombre, y ninguna búsqueda producirá n ni q a partir de ella.
Lea la estructura en lugar del base64
PEM es base64 envuelto en líneas de cabecera, y decodificarlo produce DER, que es una estructura serializada y no un número entero enorme. Las claves privadas RSA viajan en dos contenedores habituales, PKCS#1 y PKCS#8, y ambos se resuelven al mismo conjunto de números.
En el caso de dos primos, la estructura privada lleva nueve campos: una versión, el módulo n, el exponente público e, el exponente privado d, los primos p y q, dos exponentes CRT y un coeficiente CRT. RFC 8017 sección A.1 define esos componentes y la disposición ASN.1, y también permite más de dos primos, por eso un analizador general puede imprimir entradas de primos adicionales. Fíjese en el orden, porque explica un error frecuente: la mitad pública se guarda dentro del archivo privado, así que la presencia de un campo público no hace que ese archivo sea seguro para compartir. Todo lo que viene después es el material que debe quedarse en el host.
La codificación añade una capa fácil de confundir con el contenido. openssl asn1parse dibuja la estructura como un árbol para que el orden de los campos sea visible, y no descifra nada ni dice si la clave es utilizable.
Empareje un certificado con una clave sin imprimir la clave
La pregunta que sigue suele ser si un certificado y una clave van juntos. Comparar los módulos lo responde, pero también copia material próximo a lo privado en una transcripción de terminal que puede acabar en un ticket. Comparar las mitades públicas responde a la misma pregunta sin nada sensible en pantalla.
openssl pkey -in vpn-client.key -pubout -out /tmp/key.pub
openssl x509 -in vpn-client.crt -pubkey -noout > /tmp/cert.pub
cmp /tmp/key.pub /tmp/cert.pub && echo MATCH
Archivos idénticos significan que el certificado lleva la mitad pública de esa clave, y una diferencia significa que tiene el par equivocado. Esa discrepancia es la causa más común de un túnel que negocia felizmente y luego rechaza la autenticación. Después elimine los dos archivos temporales; no guardan nada secreto, pero un directorio de trabajo limpio es más fácil de razonar a mitad de un incidente.
Sepa qué no son los archivos vecinos
Un certificado no es una clave pública cifrada que el par desbloquea con el certificado de la CA; es una vinculación firmada entre una clave pública y datos de identidad. La clave de firma privada de la CA se mantiene separada de su propio certificado y de cada clave de cliente. Una solicitud tampoco es un certificado: lleva la información solicitada y la clave pública con una firma sobre la solicitud, lo que la convierte en entrada de inscripción y no en prueba de derecho.
| File | Answers | Does not prove |
|---|---|---|
| vpn-client.key | Possession of the private key | That the identity is enrolled |
| vpn-client.crt | A signed binding of public key to identity | That the client holds the matching key |
| vpn-client.csr | The requested binding and public key | That access was granted |
| dh2048.pem | Group parameters for key exchange | Any RSA component |
| crl.pem | Revocation status for certificates | Anything about a private key |
Dos de esas entradas se confunden con los parámetros RSA con suficiente frecuencia como para nombrarlas dos veces. Un archivo de parámetros Diffie-Hellman contiene parámetros de grupo para el establecimiento de clave y ningún primo RSA, aunque también se imprime como un primo grande. Una lista de revocación publica el estado de los certificados y no es un lugar donde un exponente privado pudiera esconderse.
Por eso cada línea de inventario debería registrar cuatro cosas: tipo de objeto, propietario, propósito y si se incluye material privado. La última columna decide dónde se puede copiar el archivo, y es la que la gente se salta.
Registre el emparejamiento y luego verifique el handshake
Antes de cambiar nada, guarde la salida de la verificación con la fecha y la versión de OpenSSL. Así una rotación posterior se puede comparar con pruebas en lugar de con la memoria.
openssl verify -CAfile ca.crt vpn-client.crt
openssl x509 -in vpn-client.crt -noout -subject -issuer -dates
Tras la comparación de la clave pública, recorra la ruta que consume el par: levante el túnel, confirme que el certificado se presenta y se acepta, y compruebe qué identidad registró la puerta de enlace. Si la clave y el certificado coinciden y la autenticación sigue fallando, el defecto está en la confianza, el mapeo de identidad o la política de acceso, no en el emparejamiento.
Para la reversión, guarde la clave y el certificado anteriores en un directorio con fecha y restaure ambos juntos, nunca uno de los dos. Una clave sin su certificado y un certificado sin su clave fallan igual desde fuera, lo que hace que los pares a medio restaurar sean caros de desenredar a las dos de la madrugada.