OpenVPN tls-ciphersuites verzus tls-version-min: čo každý vynucuje
Zoznam sád TLS 1.3 neobmedzuje verziu protokolu a show-tls zobrazuje iba miestnu podporu. Overujte politiku, sady a vyjednané výsledky oddelene.
Tri rôzne skutočnosti sa vo väčšine diskusií o OpenVPN a TLS zlievajú do jedného riadka: čo dokáže vaša klientska zostava, čo dovoľuje profil a čo si relácia skutočne vyjednala. Krátky zoznam sád TLS 1.3 odpovedá len na polovicu strednej otázky a o spodnej hranici verzie protokolu nehovorí nič. Prejdite nižšie uvedené kontroly po poradí a zastavte sa pri prvej, ktorá neobstojí, pretože každá ďalšia predpokladá, že predchádzajúce sú vyriešené.
Skontrolujte zostavu skôr, než začnete čítať akýkoľvek zoznam
Konfiguračná direktíva nemôže binárke pridať podporu protokolu, ktorú nemá. Začnite verzovým bannerom, ktorý uvádza skompilovanú kryptografickú knižnicu:
openvpn --version
Zostava 2.6 zlinkovaná s OpenSSL prijíma aj tls-cipher, aj tls-ciphersuites. Zostava s mbed TLS nemá vôbec žiadny výber sád TLS 1.3 a manuál 2.6 označuje tls-ciphersuites ako voľbu OpenSSL. Ak sa server prestavia s iným backendom, ten istý profil môže zmeniť správanie bez zmeny jediného riadka konfigurácie.
Kým ste tu, spustite openvpn --show-tls a výstup si uložte. Je to inventár, s ktorým budete neskôr porovnávať, a zachytiť ho predtým, než niekto začne upravovať profily, je lacné.
Zapíšte banner aj zoznam do tiketu zmeny, nie do chatovacieho okna. Keď sa dvaja ľudia hádajú, či klient bude o šesť týždňov môcť ponúknuť sadu, zachytený výstup to vyrieši jediným riadkom.
Držte hranice verzie oddelene od zoznamov šifier
V manuáli 2.6 sú to tri ovládacie prvky, nie jeden:
tls-ciphernastavuje politiku šifier pre TLS 1.2 a staršie a odovzdáva sa zoznamu šifier OpenSSL;tls-ciphersuitesvyberá sady TLS 1.3;tls-version-minatls-version-maxobmedzujú verzie protokolu, ktoré spojenie smie používať.
Starostlivo orezaný zoznam sád TLS 1.3 teda nič nedokazuje o tom, že staršia verzia je stále povolená. Ak je požiadavkou „len TLS 1.3“, nesie ju spodná hranica verzie a zoznam sád iba zužuje voľby v rámci tejto hranice:
tls-version-min 1.3
tls-ciphersuites TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
Táto dvojica robí dve veci. Vymazanie jedného z riadkov nechá druhý vynucovať menej, než si myslíte, a to je presne zlyhanie, pre ktoré celá táto kontrola existuje.
Dátový kanál je štvrtý ovládací prvok. data-ciphers vyjednáva symetrickú šifru vnútri tunela a jeho výsledok nehovorí nič o verzii TLS riadiaceho kanála. Vidieť AES-256-GCM v súhrne relácie nie je dôkaz o TLS 1.3 v žiadnom smere.
Čítajte show-tls ako miestny inventár
--show-tls vypisuje sady podporované kryptografickou knižnicou, s ktorou je táto binárka zlinkovaná, v poradí preferencie. Nie je to správa z brány. Manuál výslovne hovorí, že zoznam pochádza z miestnej knižnice, čo znamená, že notebook s OpenSSL 3.x a router so staršou zostavou vytlačia rôzne zoznamy, hoci hovoria s tým istým serverom.
| Evidence | What it actually describes |
|---|---|
--show-tls output | Capabilities of this client build and its library |
| Profile directives | What this attempt is allowed to offer |
| Session log line | What this one negotiation selected |
Predpokladajme, že klient podporuje sady A, B a C a jedna relácia si vyberie B. To nič neustanovuje o tom, či server povoľuje A alebo C, ani o tom, či B je jeho jediná povolená voľba. Držte tri riadky oddelene a väčšina mätúcich vlákien o TLS sa vyrieši sama.
Inventár sa napriek tomu oplatí uchovať. Keď relácia zlyhá, porovnanie zoznamu knižnice so zoznamom profilu ukáže, či klient mal vôbec šancu ponúknuť to, čo server chcel. Ukáže aj to, či zmena backendu potichu neodstránila TLS_CHACHA20_POLY1305_SHA256 z fondu, na ktorý sa spoliehajú starší klienti — druh regresie, ktorý sa prejaví ako hŕstka používateľov, ktorí sa nedokážu pripojiť, zatiaľ čo všetci ostatní nič nepostrehnú.
Spýtajte sa brány na niečo, čo dokáže odpovedať
Ak službu spravujete, prezrite si efektívnu konfiguráciu bežiacej inštancie, nie súbor na disku. OpenVPN mohol byť spustený s inou cestou --config, môže naťahovať vloženia a nemusel byť od úpravy reštartovaný. Klienti sa stretávajú s politikou bežiaceho démona.
Ak ju nespravujete, požiadajte operátora o podporované požiadavky na klientov alebo o vymedzený akceptačný test. Odmietnutý pokus nie je automaticky odmietnutá sada: spodná hranica verzie, kontroly identity certifikátu ako remote-cert-tls alebo nesúlad medzi tls-auth a tls-crypt môžu ukončiť výmenu skôr, než výber sady vôbec začne hrať rolu. Prečítajte si chybu servera skôr, než zmeníte zoznam klienta, pretože „handshake failed“ pokrýva štyri rôzne príčiny a iba jedna z nich je nesúlad šifry.
Nasmorovanie openssl s_client na port VPN tiež otázku nezopakuje. Riadiaci kanál beží vnútri vlastného rámovania OpenVPN, takže surová TLS sonda testuje iný protokol na porte, ktorý očakáva niečo iné. Akýkoľvek záver z nej je o sonde, nie o tuneli.
Zaznamenajte dva výsledky a držte ich oddelene
Čerstvá povolená relácia vytvorí riadok riadiaceho kanála s verziou protokolu a zvolenou šifrou a samostatný riadok dátového kanála so šifrou tunela. Zachyťte oba s verziou klienta a názvom profilu a poznamenajte, ktorá inštancia servera odpovedala:
openvpn --config office.ovpn --verb 4 2>&1 | tee session.txt
Potom oba riadky čítajte z toho súboru, nie z pamäti. Dvojica je dôkaz; samotný názov sady je preferencia a hranica verzie je samostatné tvrdenie o tom, čo server odmieta.
Vykonajte kontroly v tomto poradí. Potvrďte zostavu a backend pomocou --version. Zachyťte --show-tls, skôr než čokoľvek zmeníte. Uveďte požadovanú spodnú hranicu verzie oddelene od zoznamu sád. Potvrďte efektívnu politiku bežiacej inštancie s jej vlastníkom. Sledujte jednu povolenú reláciu a, ak to plán dovoľuje, jeden odmietnutý pokus so staršou verziou. Zaznamenajte výsledky riadiaceho a dátového kanála ako samostatné zistenia.
Ak požadovaný klient nedokáže splniť nové minimum, urobte to rozhodnutie o migrácii alebo výnimke výslovne, namiesto toho, aby ste potichu znížili nesúvisiace pravidlo prijatia, aby nasadenie vyzeralo hotové.