Citirea câmpurilor publice ale unui certificat nu necesită niciodată afișarea cheii private care îi corespunde, iar instrumentele pentru asta vin cu fiecare sistem care încheie o conexiune VPN. Riscul apare cu un pas mai devreme: fișierul primit poate să nu fie deloc un certificat. Un certificat PEM, un blob DER, un pachet PKCS#12 și un profil OpenVPN pot sosi cu același nume și pot conține material foarte diferit, așa că identifică containerul înainte de a alege o comandă.

Trei fapte decid ce comandă este sigură: ce conține fișierul, ce trebuie să citești din el și cine va vedea rezultatul. Dacă greșești la oricare dintre ele, inspecția însăși devine incidentul.

Care dintre cele trei fișiere ți-a fost dat

Un certificat PEM este text cu marcaje BEGIN și END vizibile, un fișier DER este binar și are nevoie de un indicator de format de intrare, iar un pachet este un container care poate ține o cheie lângă certificat. file server.crt separă textul de binar într-o secundă, iar o privire la prima linie separă un certificat simplu de un profil care include unul. Ghiceala aici este ce transformă o inspecție într-un incident.

Dacă fișierul este un profil, nu un certificat, tratează-l ca pe o acreditare până la proba contrarie. Ipoteza nu costă nimic și previne cea mai frecventă greșeală din toată această sarcină.

Citirea câmpurilor publice ale unui certificat PEM

Pentru un certificat pe care ești autorizat să îl inspectezi, subcomanda x509 cu -noout tipărește câmpurile alese și nimic altceva. Suprimarea corpului menține rezultatul la metadate, ceea ce îl face sigur de lipit într-un tichet. Selectorii de mai jos sunt cei publici, iar documentația openssl x509 le enumeră pe restul.

openssl x509 -in server.crt -noout -subject -issuer -dates -fingerprint -sha256

Pe un certificat de test generat local, acea comandă tipărește o linie subject și issuer, perechea notBefore și notAfter și o amprentă SHA-256. Aceste câmpuri identifică obiectul; ele nu stabilesc o cale de încredere validă, ceea ce este o sarcină separată de verificare, cu propria comandă și propriul răspuns. Un fișier de lanț poate tipări doar primul certificat dacă nu parcurgi singur fișierul. Compararea a două fișiere astfel costă o comandă și lămurește pe care dintre ele îl prezintă de fapt cealaltă parte.

Pachete care țin o cheie lângă certificat

Un fișier .p12 sau .pfx poate conține o cheie privată, iar comanda de analiză o tipărește dacă nu suprimi acea parte a rezultatului. Cu -nokeys aceeași comandă raportează în continuare structura containerului, inclusiv un sac de chei acoperit, fără a emite material de cheie; elimină indicatorul și un bloc de cheie apare în terminal și în istoricul shell-ului.

openssl pkcs12 -in bundle.p12 -nokeys -info -passin env:P12PASS

Un profil OpenVPN include același material ca text, așa că granița este vizibilă dacă știi unde să te uiți. Materialul public stă între BEGIN CERTIFICATE și END CERTIFICATE, iar orice între BEGIN PRIVATE KEY și linia END corespunzătoare este cheia și nu trebuie să părăsească gazda. Copierea profilului în întregime le publică pe amândouă.

Obținerea valorii de referință din altă parte

O amprentă citită din conexiunea pe care încerci să o verifici nu dovedește nimic, pentru că partea în care nu ai încredere a furnizat-o. Nu este un argument împotriva amprentelor; este un argument despre proveniență. Compară valoarea cu una obținută printr-un canal în care cealaltă parte nu poate scrie, cum ar fi certificatul publicat într-un depozit intern sau hash-ul tipărit într-o înregistrare de modificare semnată.

Acolo unde un depozit de încredere face validarea, lasă-l să o facă și citește eroarea produsă, în loc să o înlocuiești cu propria comparație. Distincția care contează este cine a furnizat referința, nu ce funcție hash a fost folosită.

Partajarea rezultatului și ce faci după o scăpare

Trimite eroarea exactă de validare, datele relevante și doar detaliile de identitate de care are nevoie destinatarul. Numele de gazdă interne și identificatorii de cont rămân sensibile chiar și când nu există nicio cheie, iar un serviciu public de lipire este destinația greșită pentru oricare dintre ele. Lipește în tichet, nu într-un buffer temporar partajat de altcineva.

Dacă materialul de cheie a apărut totuși pe ecran sau într-un fișier, tratează-l ca compromis și rotește-l în loc să speri că nimeni nu s-a uitat. Apoi notează fișierul inspectat, comanda folosită și unde a ajuns rezultatul, pentru că acea înregistrare transformă o sperietură într-o procedură. Rotația este ieftină față de costul de a presupune că nimeni nu a păstrat o captură de ecran, iar aceeași înregistrare îi spune următorului inginer ce fișiere au fost atinse. Fă ambele înainte de închiderea tichetului.

Articole similare