Literele dintr-o explicație RSA numesc câmpuri din interiorul unui obiect, nu fișiere pe care le distribuie un instrument PKI. Un fișier de cheie privată conține o structură ale cărei prime câmpuri sunt publice, iar câmpurile ulterioare nu trebuie să părăsească niciodată mașina care încheie tunelul. Între aceste două fapte se află majoritatea întrebărilor practice despre ce fișier răspunde la ce întrebare. Acest ghid citește mai întâi structura, apoi comenzile care o inspectează fără a o vărsa.

Confirmați că cheia este RSA înainte de a căuta numere prime

Un certificat dovedește că o cheie există și a fost semnată; nu dovedește că cheia este RSA. Sistemele pot fi construite pe curbe eliptice sau Ed25519, iar aceeași dispunere de directoare le servește pe toate. Verificați algoritmul înainte de a începe căutarea unor factori primi care nu au fost niciodată acolo.

Aceste trei comenzi doar-citire răspund la întrebare și înregistrează versiunea instrumentului.

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

Versiunea contează pentru că numele opțiunilor s-au mutat între versiunile majore. În ieșirea certificatului, găsiți linia algoritmului de cheie publică și dimensiunea cheii; în ieșirea cheii, o cheie RSA tipărește un modul și un exponent public. O cheie pe curbă eliptică tipărește în schimb o curbă cu nume, și nicio căutare nu va produce n sau q din ea.

Citiți structura în locul base64

PEM este base64 înfășurat în linii de antet, iar decodarea lui dă DER, adică o structură serializată și nu un singur întreg uriaș. Cheile private RSA călătoresc în două containere obișnuite, PKCS#1 și PKCS#8, iar ambele se rezolvă la același set de numere.

În cazul a două numere prime, structura privată poartă nouă câmpuri: o versiune, modulul n, exponentul public e, exponentul privat d, numerele prime p și q, doi exponenți CRT și un coeficient CRT. RFC 8017 secțiunea A.1 definește aceste componente și dispunerea ASN.1 și permite și mai mult de două numere prime, de aceea un analizator general poate tipări intrări suplimentare de numere prime. Observați ordinea, pentru că explică o greșeală frecventă: jumătatea publică este stocată în fișierul privat, deci prezența unui câmp public nu face acel fișier sigur de partajat. Tot ce urmează este materialul care trebuie să rămână pe gazdă.

Codificarea adaugă un strat ușor de confundat cu conținutul. openssl asn1parse desenează structura ca un arbore pentru ca ordinea câmpurilor să devină vizibilă, și nu descifrează nimic și nu spune dacă cheia este utilizabilă.

Asociați un certificat cu o cheie fără a tipări cheia

Întrebarea care urmează este de obicei dacă un certificat și o cheie merg împreună. Compararea modulelor răspunde la asta, dar copiază și material apropiat de privat într-o transcriere de terminal care poate ajunge într-un tichet. Compararea jumătăților publice răspunde la aceeași întrebare fără nimic sensibil pe ecran.

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

Fișiere identice înseamnă că certificatul poartă jumătatea publică a acelei chei, iar o diferență înseamnă că țineți perechea greșită. Această nepotrivire este cea mai frecventă cauză a unui tunel care negociază vesel și apoi refuză autentificarea. Apoi eliminați cele două fișiere temporare; nu conțin nimic secret, dar un director de lucru curat este mai ușor de gândit la mijlocul unui incident.

Știți ce nu sunt fișierele vecine

Un certificat nu este o cheie publică criptată pe care cealaltă parte o deschide cu certificatul CA; este o legătură semnată între o cheie publică și date de identitate. Cheia privată de semnare a CA rămâne separată de propriul certificat și de fiecare cheie de client. Nici o cerere nu este un certificat: ea poartă informațiile cerute și cheia publică cu o semnătură asupra cererii, ceea ce o face intrare de înregistrare și nu dovadă a dreptului.

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

Două dintre acele intrări sunt confundate cu parametrii RSA destul de des pentru a fi numite de două ori. Un fișier de parametri Diffie-Hellman conține parametri de grup pentru stabilirea cheii și niciun număr prim RSA, deși se tipărește și ca un număr prim mare. O listă de revocare publică starea certificatelor și nu este un loc unde un exponent privat s-ar putea ascunde.

Prin urmare, fiecare linie de inventar ar trebui să înregistreze patru lucruri: tipul obiectului, proprietarul, scopul și dacă este inclus material privat. Ultima coloană decide unde poate fi copiat fișierul, și ea este cea pe care oamenii o sar.

Înregistrați asocierea, apoi verificați strângerea de mână

Înainte de a schimba ceva, salvați ieșirea verificării cu data și versiunea OpenSSL. O rotație ulterioară poate fi atunci comparată cu dovezi, nu cu memoria.

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

După compararea cheii publice, parcurgeți calea care consumă perechea: ridicați tunelul, confirmați că certificatul este prezentat și acceptat, și verificați ce identitate a înregistrat poarta de acces. Dacă cheia și certificatul se potrivesc și autentificarea tot eșuează, defectul este în încredere, în maparea identității sau în politica de acces, nu în pereche.

Pentru revenire, păstrați cheia și certificatul anterioare într-un director cu dată și restabiliți-le pe amândouă împreună, niciodată doar unul dintre ele. O cheie fără certificatul ei și un certificat fără cheia lui eșuează identic din exterior, ceea ce face perechile pe jumătate restabilite scumpe de descurcat la ora două dimineața.

Articole similare