Citește numele opțiunii literal. Acesta numește o cheie, iar confuzia începe când fișierul care este deblocat este confundat cu contul care este autentificat. Lipește parola contului în acea opțiune și clientul va încerca să deschidă un fișier de cheie cu ea, ceea ce eșuează din motive care nu au nicio legătură cu autentificarea VPN.

Partea confuză este că o singură conexiune poate avea nevoie, în mod legitim, de ambele secrete. Autentificarea cu certificat de client poate necesita o cheie criptată, iar același gateway poate efectua în continuare un schimb de autentificare a utilizatorului după acceptarea certificatului. Niciunul dintre secrete nu satisface cealaltă etapă, iar o defecțiune la unul arată de afară foarte asemănător cu o defecțiune la celălalt.

Două secrete, două sarcini diferite

Citește rolurile ca acces la fișier versus admitere în rețea. Parola cheii decriptează cheia privată PEM indicată în --sslkey, astfel încât certificatul de client TLS să poată fi prezentat. Decriptarea are loc local, în interiorul procesului clientului, iar fraza de acces în sine nu ajunge niciodată la gateway. Ceea ce vede gateway-ul este certificatul și o semnătură făcută cu cheia. Manualul OpenConnect ține --key-password lângă --certificate și --sslkey, iar în versiunile care pot folosi o cheie păstrată într-un TPM aceeași opțiune poartă în schimb parola cheii rădăcină de stocare.

Parola contului este de altă natură. Intră în schimbul de autentificare: un formular cu nume de utilizator și parolă, un token, o rundă SAML sau o combinație anunțată de gateway. Unele implementări nu o cer deloc când certificatul este singurul factor, iar altele o cer chiar și după un certificat, pentru că certificatul dovedește dispozitivul, în timp ce contul dovedește persoana.

Amestecarea celor două produce erori înșelătoare. Un gateway care respinge o autentificare raportează de obicei o eroare de autentificare, în timp ce o frază de acces greșită a cheii eșuează de obicei mai devreme, când stratul TLS nu poate citi fișierul cheii. Sunt etape diferite cu remedii diferite, iar numele seamănă destul de mult încât oamenii le inversează și apoi urmăresc jurnalul greșit. Observă ce mesaj a apărut înainte de a schimba vreo setare, pentru că formularea mesajului este cel mai ieftin diagnostic pe care îl ai.

Când parola cheii este cu adevărat necesară

Opțiunea are sens doar când există o cheie criptată de deblocat. Dacă te conectezi cu nume de utilizator și parolă și fără certificat de client, --key-password nu are pe ce să acționeze, iar includerea ei nu schimbă nimic. Dacă te conectezi cu --certificate și --sslkey, formatul fișierului cheii decide dacă se va cere sau nu o frază de acces.

Ambele secrete într-o singură comandă sunt obișnuite în mediile administrate: un certificat de dispozitiv într-o cheie criptată, plus o autentificare pentru fiecare utilizator. Secvența corectă este să lași clientul să ceară local fraza de acces a cheii, să finalizezi strângerea de mână a certificatului și apoi să tratezi separat solicitarea de cont a gateway-ului. Încercarea de a precompleta ambele printr-un singur script reutilizat este locul unde confuzia începe de obicei.

Un diagnostic util este să vezi când apare defecțiunea. Dacă clientul se oprește înainte de a începe orice autentificare de rețea, suspectează fișierul cheii, formatul acestuia sau fraza de acces. Dacă sesiunea TLS este stabilită și apoi gateway-ul respinge utilizatorul, cheia și-a făcut treaba, iar problema este schimbul de cont.

Ține ambele secrete în afara istoricului shell-ului

Argumentele din linia de comandă pot fi citite de alți utilizatori locali prin tabelul de procese și ajung des în istoricul shell-ului, în scripturi și în transcrieri de asistență. OpenConnect poate citi parola contului din intrarea standard cu --passwd-on-stdin, iar fraza de acces a cheii poate veni dintr-un mesaj interactiv sau de la un agent în locul unui argument. Niciun mecanism nu face secretul sigur de unul singur, dar ambele îl țin departe de locurile cele mai expuse.

Fișierele merită aceeași grijă. Un script care scrie o frază de acces într-un fișier temporar ar trebui să îl creeze cu permisiuni restrictive, să îl șteargă la ieșire și să evite directoarele care pot fi citite de toată lumea. O frază de acces care supraviețuiește sesiunii într-un director temporar este o copie pe care ai uitat să o faci. Variabilele de mediu sunt vizibile proceselor copil și ajung des reproduse de instrumentele de depanare, așa că nu sunt o îmbunătățire gratuită față de argumente.

Ieșirea de diagnostic este scurgerea tăcută. Jurnalele clientului la un nivel mai mare de detaliu pot arăta corpuri de cereri sau valori ale opțiunilor, iar o transcriere de terminal copiată este ușor de lipit într-un tichet, așa că citește ieșirea înainte de a o partaja.

Un buton mort de pe desktop este o altă defecțiune

O intrare VPN pe desktop care arată un indicator rotativ și apoi nimic nu este de obicei deloc o problemă de autentificare. Butonul aparține unui manager de rețea, unei applet-uri a producătorului sau unui plugin care lansează OpenConnect în numele tău, iar o componentă lipsă sau un profil ilizibil pot produce exact acel simptom. Află ce proces lansează butonul și citește eroarea acestuia înainte de a atinge acreditările.

Este tentant să relaxezi verificarea certificatului sau să dezactivezi o verificare când interfața grafică refuză să se conecteze. Asta transformă o defecțiune de integrare a clientului într-o reducere a securității și rareori rezolvă problema de lansare. Păstrează intactă verificarea serverului, confirmă că profilul indică gateway-ul dorit și verifică dacă ajutorul pe care interfața îl așteaptă este într-adevăr instalat.

O listă scurtă separă cazurile. O defecțiune locală înainte de a pleca vreun pachet indică cheia sau instalarea clientului. O respingere a gateway-ului după sesiunea TLS indică schimbul de cont. Un buton care nu lansează niciodată clientul indică integrarea cu desktopul. Trei defecțiuni diferite, dintre care una este o parolă pe care erai pe punctul de a o lipi în caseta greșită.

Articole similare