Două profiluri livrează ambele un fișier numit ca.crt, un tunel urcă și celălalt eșuează cu o eroare de lanț. Deschiderea celor două fișiere unul lângă altul rareori lămurește lucrurile, iar dezactivarea verificării le lămurește în direcția greșită. Întrebarea pe care eroarea o pune de fapt este mai îngustă: ce certificat încarcă fiecare proces ca ancoră de încredere a sa și sunt cele două același obiect? Răspundeți mai întâi la asta și restul diagnosticului capătă direcție. Numele fișierului este o etichetă de ambalare, iar calea scrisă în profil nu este nici ea autoritativă, așa că totul depinde de ceea ce procesul citește cu adevărat.

Găsiți certificatul pe care clientul îl încarcă de fapt

OpenVPN acceptă autoritatea în două forme, iar forma decide ce octeți contează. Un profil poate indica un fișier extern cu ca sau poate încorpora certificatul într-un bloc <ca> chiar în profil. Când există ambele, câștigă blocul încorporat, iar fișierul de lângă profil nu este niciodată deschis.

Citiți profilul care eșuează și aflați ce formă folosește înainte de a compara ceva. O copie luată dintr-un director vecin sau din pachetul din care a venit celălalt profil nu vă spune nimic despre în ce are încredere acest proces. Același lucru este valabil pentru calea din configurație: este rezolvată relativ la locul unde a fost pornit clientul, care nu este întotdeauna directorul la care vă uitați. Citiți profilul, nu folderul.

Certificatele sunt identificate după conținut: cheia publică, subiectul și emitentul, fereastra de valabilitate și semnătura peste toate acestea. Două fișiere cu octeți identici sunt același certificat oricum s-ar numi, iar două fișiere cu același nume pot fi autorități fără legătură. Numele este o etichetă de ambalare, nu o identitate.

Luați amprenta ambelor copii cu openssl

O amprentă este un hash peste codificarea DER a certificatului, forma pe care o acoperă semnătura, deci terminările de rând și textul antetului nu o pot afecta. Calculați-o pentru fiecare fișier și aveți două șiruri hexadecimale separate prin două puncte care fie coincid, fie nu. Nu trebuie citit nimic altceva din certificat pentru a răspunde la întrebarea comparației.

openssl x509 -in /etc/openvpn/office/ca.crt -noout -fingerprint -sha256
openssl x509 -in ~/profiles/lab-ca.pem -noout -fingerprint -sha256

Este tentant să îndreptați openssl spre profilul însuși, dar acesta citește primul bloc de certificat care apare în fișier, iar un profil conține de obicei <cert> înainte de <ca>. Extrageți blocul autorității, apoi luați amprenta fișierului extras, pentru că aceea este copia pe care clientul o va folosi de fapt.

sed -n '/^<ca>$/,/^<\/ca>$/p' office.ovpn | sed '1d;$d' > /tmp/office-ca.pem
openssl x509 -in /tmp/office-ca.pem -noout -fingerprint -sha256

Amprente identice înseamnă că materialul de încredere este același și că eroarea de lanț are o altă cauză, ceea ce este altă investigație. Amprente diferite înseamnă certificate diferite, și acolo începe secțiunea următoare.

Citiți o discrepanță înainte de a presupune un atac

Amprente diferite înseamnă certificate diferite și nimic mai mult. O reemitere, o rotație, o autoritate redenumită sau un pachet învechit produc toate fișiere diferite cu istorii complet legitime. Care aparține implementării este o întrebare pentru operator sau pentru registrul de implementare, nu pentru ora de modificare a fișierului. Arhivele copiază mărcile de timp, așa că un fișier mai nou nu este automat ancora corectă.

O rădăcină care se semnează pe sine este normală, deci găsirea uneia nu este dovada unei probleme. Sarcina verificatorului este să construiască o cale de la certificatul serverului la ancora care i-a fost înmânată, iar o eroare de lanț înseamnă de obicei că acea cale nu a putut fi finalizată.

Verificați dacă ancora profilului care eșuează este o autoritate de la care implementarea încă emite. Dacă amprenta nu corespunde nimic din registrul de implementare, profilul este pur și simplu învechit, iar nicio ajustare pe partea clientului nu va repara asta.

Reparați încrederea fără a dezactiva verificarea

Corectarea pe termen scurt este să dezactivați verificarea sau să adăugați fiecare certificat din lanț ca ancoră. Ambele fac mesajul să dispară, și ambele schimbă ce servere va accepta clientul de atunci înainte. Reactivați verificarea, instalați ancora dorită și retestați.

Dacă lanțul se construiește acum, dar apare o altă eroare, acesta este un progres: verificarea numelui, datele de valabilitate și revocarea sunt verificări separate cu mesaje separate. Păstrați perechea de amprente și textul original al erorii împreună în tichet, ca următoarea persoană să vadă ce ancoră a fost încărcată și care era așteptată. O pereche de amprente este destul de mică pentru a fi lipită într-o notă de predare, iar următoarea apariție durează atunci cinci minute în loc de o după-amiază.

Obțineți autoritatea corectă prin același canal autentificat care a livrat profilul. Scoaterea unui certificat de pe server pentru că subiectul său pare familiar este un alt act și lărgește în tăcere ceea ce clientul va avea încredere.

Articole similare