As letras dunha explicación de RSA nomean campos dentro dun obxecto, non ficheiros que reparte unha ferramenta PKI. Un ficheiro de chave privada contén unha estrutura cuxos primeiros campos son públicos e cuxos campos posteriores nunca deben saír da máquina que remata o túnel. Entre eses dous feitos están case todas as preguntas prácticas sobre que ficheiro responde a que pregunta. Este manual le primeiro a estrutura e despois os comandos que a inspeccionan sen derramala.

Confirme que a chave é RSA antes de buscar primos

Un certificado demostra que existe algunha chave e que foi asinada; non demostra que a chave sexa RSA. Os sistemas pódense construír sobre curvas elípticas ou Ed25519, e a mesma disposición de directorios serve para todos. Comprobe o algoritmo antes de comezar a buscar factores primos que nunca estiveron aí.

Estes tres comandos de só lectura responden á pregunta e rexistran a versión da ferramenta.

openssl version
openssl x509 -in vpn-client.crt -noout -text
openssl pkey -in vpn-client.key -noout -text

A versión importa porque os nomes de opción movéronse entre versións principais. Na saída do certificado, atope a liña do algoritmo de chave pública e o tamaño da chave; na saída da chave, unha chave RSA imprime un módulo e un expoñente público. Unha chave de curva elíptica imprime no seu lugar unha curva con nome, e ningunha busca producirá n nin q a partir dela.

Lea a estrutura en lugar do base64

PEM é base64 envolto en liñas de cabeceira, e decodificalo produce DER, que é unha estrutura serializada e non un número enteiro enorme. As chaves privadas RSA viaxan en dous contedores habituais, PKCS#1 e PKCS#8, e ambos se resolven ao mesmo conxunto de números.

No caso de dous primos, a estrutura privada leva nove campos: unha versión, o módulo n, o expoñente público e, o expoñente privado d, os primos p e q, dous expoñentes CRT e un coeficiente CRT. RFC 8017 sección A.1 define eses compoñentes e a disposición ASN.1, e tamén permite máis de dous primos, por iso un analizador xeral pode imprimir entradas de primos adicionais. Fíxese na orde, porque explica un erro frecuente: a metade pública gárdase dentro do ficheiro privado, así que a presenza dun campo público non fai que ese ficheiro sexa seguro para compartir. Todo o que vén despois é o material que debe quedar no host.

A codificación engade unha capa doada de confundir co contido. openssl asn1parse debuxa a estrutura como unha árbore para que a orde dos campos sexa visible, e non descifra nada nin di se a chave é utilizábel.

Emparexe un certificado cunha chave sen imprimir a chave

A pregunta que segue adoita ser se un certificado e unha chave van xuntos. Comparar os módulos responde a iso, pero tamén copia material próximo ao privado nunha transcrición de terminal que pode acabar nun ticket. Comparar as metades públicas responde á mesma pregunta sen nada sensíbel na 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

Ficheiros idénticos significan que o certificado leva a metade pública desa chave, e unha diferenza significa que ten o par equivocado. Esa discrepancia é a causa máis común dun túnel que negocia alegremente e despois rexeita a autenticación. Despois elimine os dous ficheiros temporais; non gardan nada secreto, pero un directorio de traballo limpo é máis doado de razoar a metade dun incidente.

Saiba que non son os ficheiros veciños

Un certificado non é unha chave pública cifrada que o par desbloquea co certificado da CA; é unha vinculación asinada entre unha chave pública e datos de identidade. A chave de sinatura privada da CA mantense separada do seu propio certificado e de cada chave de cliente. Unha solicitude tampouco é un certificado: leva a información solicitada e a chave pública cunha sinatura sobre a solicitude, o que a converte en entrada de rexistro e non en proba de dereito.

FileAnswersDoes not prove
vpn-client.keyPossession of the private keyThat the identity is enrolled
vpn-client.crtA signed binding of public key to identityThat the client holds the matching key
vpn-client.csrThe requested binding and public keyThat access was granted
dh2048.pemGroup parameters for key exchangeAny RSA component
crl.pemRevocation status for certificatesAnything about a private key

Dúas desas entradas confúndense cos parámetros RSA con suficiente frecuencia como para nomealas dúas veces. Un ficheiro de parámetros Diffie-Hellman contén parámetros de grupo para o establecemento de chave e ningún primo RSA, aínda que tamén se imprime como un primo grande. Unha lista de revocación publica o estado dos certificados e non é un lugar onde un expoñente privado puidese esconderse.

Por iso cada liña de inventario debería rexistrar catro cousas: tipo de obxecto, propietario, propósito e se se inclúe material privado. A última columna decide onde se pode copiar o ficheiro, e é a que a xente salta.

Rexistre o emparellamento e logo verifique o handshake

Antes de cambiar nada, garde a saída da verificación coa data e a versión de OpenSSL. Así unha rotación posterior pódese comparar con probas en lugar de con memoria.

openssl verify -CAfile ca.crt vpn-client.crt
openssl x509 -in vpn-client.crt -noout -subject -issuer -dates

Tras a comparación da chave pública, percorra a ruta que consome o par: levante o túnel, confirme que o certificado se presenta e se acepta, e comprobe que identidade rexistrou a pasarela. Se a chave e o certificado coinciden e a autenticación segue fallando, o defecto está na confianza, no mapeado de identidade ou na política de acceso, non no emparellamento.

Para a reversión, garde a chave e o certificado anteriores nun directorio con data e restaure ambos á vez, nunca un dos dous. Unha chave sen o seu certificado e un certificado sen a súa chave fallan igual desde fóra, o que fai que os pares a medio restaurar sexan caros de desenredar ás dúas da mañá.

Artigos relacionados