Două profiluri, unul se conectează și celălalt nu, iar modalitatea rapidă de a vedea de ce este un diff. Problema este că același diff tipărește cheia privată inline, cheia statică și orice bloc de acreditări pe care îl conține fișierul, iar oamenii lipesc rezultatul într-un chat înainte să observe. Decizia cu privire la ce comparați vine înainte de a rula comanda. Comparați structura și rolurile pe copii protejate și construiți un fișier redactat separat când altcineva trebuie să îl vadă.

Ce conține de fapt un fișier .ovpn

Un fișier .ovpn este o configurație cu blocuri inline opționale. Poate conține un certificat CA, un certificat de client, o cheie privată, o cheie tls-auth sau tls-crypt, și directive care indică fișiere externe sau cer acreditări. Două fișiere pot părea aproape identice și diferi doar în interiorul unui bloc, sau într-o singură directivă care schimbă complet transportul. Numărul de linii nu vă spune nimic despre care dintre acestea s-a întâmplat.

O diferență în interiorul unui bloc de cheie nu este dovadă publică a nimic. Un certificat reemis și unul cu cheie nouă pot produce aceeași formă de schimbare, așa că nepotrivirea blocului spune că materialul este diferit, nu ce decizie l-a produs. Tratați-o ca pe un semnal de a compara câmpuri, nu ca pe o constatare.

Comparați după rol, nu după linie

Urmați ordinea proprie a conexiunii: mai întâi punctul final și transportul, apoi încrederea și identitatea așteptată, apoi autentificarea utilizatorului, apoi rutele, DNS și cârligele de script. Această secvență corespunde a ceea ce face clientul, așa că prima diferență pe care o întâlniți este primul lucru care ar fi putut rupe conexiunea. Compararea alfabetică, în schimb, împrăștie setările înrudite pe tot rezultatul.

O trecere conștientă de câmpuri se uită la aceste elemente, în această ordine. Tot ce cere clientul în mod interactiv aparține rândului de autentificare, nu rândurilor de încredere.

  • remote, proto și port, inclusiv fiecare bloc de conexiune.
  • ca și cert: emitent, subiect și data de expirare.
  • Dacă există deloc o cheie privată, niciodată ce conține.
  • tls-auth sau tls-crypt prezența și direcția cheii.
  • Directive de autentificare, inclusiv orice referință la un fișier de acreditări.
  • Rute, opțiuni DNS și cârlige de script care rulează la conectare.

Când un fișier conține mai multe blocuri de conexiune, păstrați fiecare opțiune lângă punctul său final. Compararea doar a primei linii remote poate rata alternativa pe care clientul o alege de fapt în această rețea.

De ce un diff simplu este instrumentul greșit

Un diff simplu este construit pentru text, nu pentru secrete. Va tipări bucuros o cheie privată în istoricul ecranului și nu vă va spune că directiva la care vă uitați este irelevantă pentru defecțiune. Extracțiile de câmpuri sunt simultan mai sigure și mai lizibile, pentru că materialul certificatului poate fi comparat ca metadate în loc de octeți.

openssl x509 -in ca.crt -noout -subject -issuer -enddate
openssl x509 -in client.crt -noout -subject -issuer -enddate
grep -E '^(remote|proto|port|tls-auth|tls-crypt|route|dhcp-option)' profile.ovpn

Primele două comenzi tipăresc identitatea și valabilitatea fără a atinge cheia, așa că rezultatul lor poate fi lipit în siguranță. grep tipărește numele și valorile directivelor, dar niciodată corpul blocurilor, ceea ce îl face prima trecere corectă când bănuiți o diferență de transport sau de rutare. Dacă trebuie comparat blocul în sine, comparați hash-ul lui în loc de conținut.

Construiți o copie redactată pentru tichet

Eliminați secretele reale și identificatorii inutili păstrând numele câmpurilor și suficientă structură pentru a explica diferența. Un marcaj de aceeași formă dezvăluie totuși unde se află materialul și cât de lung era, așa că decideți dacă și acest lucru este acceptabil. Verificați atașamentul final în sine în loc să vă bazați pe comanda pe care vă amintiți că ați rulat-o. Nu editați originalul de lucru doar pentru a produce un exemplu, pentru că un profil redactat nu este neapărat executabil și nu trebuie reimportat niciodată.

Păstrați originalele identificabile după numele fișierului și hash în loc să le copiați în trei directoare cu nume similare. Un șir hash este suficient pentru a dovedi ce fișier a fost examinat și nu costă nimic dacă scapă. Tăiați copiile după ce modificarea este închisă, astfel încât următoarea persoană să moștenească un singur fișier autoritar.

Țineți comparația legată de o defecțiune

O comparație își merită costul când răspunde la o întrebare despre un import sau o defecțiune de conexiune. Numiți mai întâi pasul care eșuează, apoi comparați doar câmpurile de care depinde acel pas; colectarea tuturor acreditărilor clientului într-un singur director face următoarea scurgere mai probabilă și următorul diagnostic mai lent. Cu cât întrebarea este mai îngustă, cu atât lista câmpurilor care o pot răspunde este mai scurtă.

Dacă un fișier nou a venit de la operator, confirmați calea lui de distribuire înainte de a înlocui materialul de încredere. După modificare, inspectați copia importată pe care clientul a ales-o de fapt și rezultatul negociat, pentru că o directivă poate fi ignorată sau citită diferit de o altă versiune de client. Fișierul de pe disc nu este dovada conexiunii care a rulat. Semantica directivelor se află în manualul OpenVPN 2.6.

Articole similare