tls-auth key-direction: 0 dhe 1 duhet të ndryshojnë, jo të përputhen
Me tls-auth të dy skajet kanë nevojë për drejtime të kundërta, 0 dhe 1, ose të dy duhet ta lënë mënjanë cilësimin. I njëjti numër dështon, dhe tls-crypt nuk e përdor kurrë.
Njëra anë e tunelit nënshkruan kanalin e kontrollit me një slot çelësi që ana tjetër nuk e kontrollon kurrë, dhe lidhja vdes me një gabim vërtetimi përpara se të shkëmbehet edhe një certifikatë. Kështu duket një mospërputhje drejtimi te tls-auth, dhe është deterministe: të njëjtat dy skedarë dështojnë në çdo përpjekje, nga çdo rrjet. Asgjë në regjistër nuk e emërton opsionin që kërkoni, prandaj njerëzit rindërtojnë çelësat dhe riemitojnë certifikata që nuk ishin prishur kurrë. Zgjidhja është t'i bësh të dy skajet plotësues, ose t'i lësh të dy dykahësh, jo të dobësosh verifikimin.
Dështimi ndodh përpara certifikatave
Me tls-auth, të dy palët mbajnë të njëjtin çelës të përbashkët dhe secila përdor një nga dy slotet e nxjerra prej tij: njëri slot nënshkruan paketat e kontrollit në dalje, tjetri verifikon ato në hyrje. Drejtimi 0 dhe drejtimi 1 i caktojnë këto role në rend të kundërt, prandaj çifti duhet të jetë plotësues që kontrollet HMAC të përputhen. Kur caktimi përmbyset në njërën anë, marrësi kërkon një nënshkrim në slotin e gabuar dhe e refuzon paketën. Sesioni mbaron aty, prandaj gabimi ka të bëjë me vërtetimin e paketave dhe jo me diçka që do të prodhonte depoja e certifikatave.
Determinizmi ka rëndësi për diagnozën, sepse një problem kohe ose rruge lë një gjurmë tjetër: ndërprerje të herëpashershme, një drejtim që dështon, ose një sesion që vdes vetëm në një rrjet të caktuar. Mospërputhja e drejtimit dështon në shtrëngimin e parë të duarve çdo herë, dhe dështon njësoj në një makinë tjetër me të njëjtat dy skedarë. Lexoni regjistrin te --verb 4 dhe gjeni paketën e parë të refuzuar në vend të rreshtit të fundit. Nëse ai refuzim ndodh përpara çdo shkëmbimi certifikatash, çelësi i përbashkët dhe drejtimi i tij janë dy gjërat që ia vlen të kontrollohen.
| What you see | What it rules out | Next check |
|---|---|---|
| Authentication error before any certificate is sent | The data channel is irrelevant; the control channel never authenticated | Compare tls-auth and its direction on both ends |
| Certificate or handshake failure after the control channel authenticates | The shared key and its direction already agree | Check the CA, the certificate dates and the hostname |
| Session completes but throughput or cipher warnings appear | Direction was never the problem | Compare the data-channel cipher settings |
| Startup stops on an options error | The number itself is not the issue | Re-read the inline versus external directive syntax |
Ku jeton numri
Manuali i OpenVPN 2.6 dokumenton dy vende për drejtimin: argumentin e dytë të tls-auth kur çelësi ndodhet në një skedar të vetin, dhe një rresht të veçantë key-direction kur çelësi është i integruar në profil. Të dy vendosin të njëjtën vlerë, prandaj një profil duhet të përdorë njërën formë ose tjetrën, kurrë të dyja. Heqja është gjithashtu një zgjedhje, dhe i vendos të dy palët në një renditje dykahëshe që funksionon kur asnjëra anë nuk emërton një drejtim. Dy palë me të njëjtin numër nuk janë në atë renditje: secila pret të nënshkruajë në një slot dhe të verifikojë në tjetrin, dhe të dyja e bëjnë atë në të njëjtën mënyrë.
# server.conf, external key tls-auth ta.key 0 # client.ovpn, external key tls-auth ta.key 1 # client.ovpn, inline key key-direction 1
Forma e integruar është një direktivë në rreshtin e vet, jo një atribut në etiketën hapëse të bllokut të çelësit, dhe shtimi i një argumenti në atë etiketë është gabim, jo ndryshim drejtimi. Edhe vendosja ka rëndësi: direktiva qëndron jashtë bllokut të cilit i përket, prandaj një vlerë e shkruar brenda bllokut lexohet si material çelësi. Kopjoni renditjen që ka pasur parasysh shpërndarësi i profilit në vend që të shpikni një çift, sepse një profil që funksionon kundër një serveri mund të jetë tashmë i pasqyruar në anën tjetër.
Çfarë nuk prek opsioni
Nuk kripton trafikun e aplikacioneve. tls-auth vendos një HMAC rreth paketave të kanalit të kontrollit, ndërsa kanali i të dhënave mbrohet nga çelësat e sesionit të negociuar gjatë shtrëngimit të duarve, prandaj një pyetje për xhiron ose kriptimin nuk ka asnjë lidhje me numrin e drejtimit. Cilësimi nuk shton as një shtresë të dytë kriptimi, dhe pikërisht ky supozim i dërgon njerëzit të kërkojnë një çelës më të gjatë.
Nuk zbatohet për tls-crypt, një mekanizëm tjetër i kanalit të kontrollit me opsionet dhe trajtimin e çelësave të vet, dhe nuk thotë asgjë për identitetin e certifikatës së asnjë pale. Prandaj një përputhje drejtimi që funksionon vërteton vetëm se të dy skajet bien dakord si të vërtetohet kanali i kontrollit, jo se zinxhiri i besimit u validua.
Rreshtoni çiftin, pastaj rilidhuni
Krahasoni të dy konfigurimet përpara se të ndryshoni ndonjë, sepse redaktimi i anës që ishte tashmë e saktë dyfishon punën. Grep-i më poshtë tregon cilin mekanizëm zgjedh çdo skedar; ekzekutimi i detajuar tregon nëse kanali i kontrollit u vërtetua fare. Ruani të dyja daljet, që ndryshimi i radhës të krahasohet me një gjendje të njohur.
grep -n -E 'tls-auth|tls-crypt|key-direction' server.conf client.ovpn openvpn --config client.ovpn --verb 4 2>&1 | grep -i -E 'hmac|tls error|control channel'
Rinisni të dy palët pas çdo ndryshimi, sepse këto opsione lexohen një herë në nisje dhe ringarkimi i njërës anë e lë çiftin jokonsistent për gjithë jetën e sesionit të vjetër. Nëse vendosja aktualisht funksionon pa një drejtim të konfiguruar, shtimi i cilësimit në një palë riprodhon dështimin me të cilin filluat; ose lërini të dyja ose konfiguroni të dyja. Ndryshoni një skaj në një herë dhe ruani skedarin e mëparshëm, që një regresion të jetë një kthim dy minutash dhe jo një rindërtim.
Shënoni mekanizmin, skedarin e çelësit dhe drejtimin për çdo skaj në shënimet e vendosjes, sepse përndryshe personi tjetër do të lexojë dy skedarë të ngjashëm dhe do të supozojë se numrat duhet të përputhen me njëri-tjetrin. Drejtimi është një detaj koordinimi, jo një përmirësim sigurie: ndan dy drejtimet e kanalit të kontrollit dhe nuk bën asgjë tjetër.