Tri različite činjenice stapaju se u jedan redak u većini rasprava o OpenVPN i TLS-u: što vaša klijentska gradnja može, što profil dopušta i što je sesija doista dogovorila. Kratak popis TLS 1.3 skupova odgovara samo napola na srednje pitanje i ne govori ništa o donjoj granici verzije protokola. Prođite provjere u nastavku redom i zaustavite se na prvoj koja ne stoji, jer svaka kasnija provjera pretpostavlja da su prethodne riješene.

Provjerite gradnju prije nego što pročitate bilo koji popis

Konfiguracijska direktiva ne može binarnoj datoteci dodati podršku za protokol koju ona nema. Započnite s verzijskim bannerom koji navodi kompiliranu kriptografsku biblioteku:

openvpn --version

Gradnja 2.6 povezana s OpenSSL-om prihvaća i tls-cipher i tls-ciphersuites. Gradnja s mbed TLS nema nikakav odabir TLS 1.3 skupova, a priručnik za 2.6 označava tls-ciphersuites kao OpenSSL opciju. Ako se poslužitelj ponovno izgradi s drugim backendom, isti profil može promijeniti ponašanje bez promjene ijednog retka konfiguracije.

Dok ste ovdje, pokrenite openvpn --show-tls i sačuvajte izlaz. To je inventar s kojim ćete kasnije uspoređivati, a jeftino ga je zabilježiti prije nego što netko počne uređivati profile.

Upišite banner i popis u tiket promjene, a ne u prozor razgovora. Kada se dvoje ljudi spore može li klijent za šest tjedana ponuditi skup, zabilježeni izlaz to rješava u jednom retku.

Držite granice verzije odvojeno od popisa šifri

U priručniku za 2.6 to su tri kontrole, a ne jedna:

  • tls-cipher postavlja politiku šifri za TLS 1.2 i starije i prosljeđuje se popisu šifri OpenSSL-a;
  • tls-ciphersuites odabire TLS 1.3 skupove;
  • tls-version-min i tls-version-max ograničavaju verzije protokola koje veza smije koristiti.

Dakle, pažljivo podrezan popis TLS 1.3 skupova ne dokazuje ništa o tome da je starija verzija još uvijek dopuštena. Ako je zahtjev «samo TLS 1.3», nosi ga donja granica verzije, a popis skupova samo sužava izbore unutar te granice:

tls-version-min 1.3
tls-ciphersuites TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256

Taj par obavlja dva posla. Brisanje jednog retka ostavlja drugi da nameće manje nego što mislite, i upravo je to kvar zbog kojeg cijela ova provjera postoji.

Podatkovni kanal četvrta je kontrola. data-ciphers pregovara simetričnu šifru unutar tunela, a njegov rezultat ne govori ništa o TLS verziji kontrolnog kanala. Vidjeti AES-256-GCM u sažetku sesije nije dokaz o TLS 1.3 ni u jednom smjeru.

Čitajte show-tls kao lokalni inventar

--show-tls navodi skupove koje podržava kriptografska biblioteka s kojom je ova binarna datoteka povezana, redoslijedom preferencija. To nije izvještaj s pristupnika. Priručnik izričito kaže da popis dolazi iz lokalne biblioteke, što znači da će prijenosno računalo s OpenSSL 3.x i usmjerivač sa starijom gradnjom ispisati različite popise dok razgovaraju s istim poslužiteljem.

EvidenceWhat it actually describes
--show-tls outputCapabilities of this client build and its library
Profile directivesWhat this attempt is allowed to offer
Session log lineWhat this one negotiation selected

Pretpostavimo da klijent podržava skupove A, B i C i da jedna sesija odabere B. To ne utvrđuje ništa o tome dopušta li poslužitelj A ili C, ni o tome je li B njegov jedini dopušteni izbor. Držite tri retka odvojeno i većina zbunjujućih TLS rasprava riješit će se sama.

Inventar se ipak isplati čuvati. Kada sesija ne uspije, usporedba popisa biblioteke s popisom profila pokazuje je li klijent uopće imao priliku ponuditi ono što je poslužitelj želio. Također pokazuje je li promjena backenda tiho uklonila TLS_CHACHA20_POLY1305_SHA256 iz skupa na koji se oslanjaju stariji klijenti — vrsta regresije koja se očituje kao šačica korisnika koji se ne mogu povezati dok svi ostali ništa ne primjećuju.

Pitajte pristupnik nešto na što može odgovoriti

Ako administrirate uslugu, pregledajte efektivnu konfiguraciju pokrenute instance umjesto datoteke na disku. OpenVPN je možda pokrenut s drugom putanjom --config, možda povlači uključivanja i možda nije ponovno pokrenut od izmjene. Politika pokrenutog demona je ono s čime se klijenti susreću.

Ako je ne administrirate, zatražite od operatera podržane zahtjeve klijenata ili ograničeni test prihvaćanja. Odbijen pokušaj nije automatski odbijen skup: donja granica verzije, provjere identiteta certifikata poput remote-cert-tls ili nepodudarnost između tls-auth i tls-crypt mogu prekinuti razmjenu prije nego što odabir skupa uopće postane važan. Pročitajte pogrešku poslužitelja prije nego što promijenite popis klijenta, jer «handshake failed» pokriva četiri različita uzroka i samo je jedan od njih nepodudarnost šifre.

Usmjeravanje openssl s_client na VPN port također ne reproducira pitanje. Kontrolni kanal radi unutar vlastitog okvira OpenVPN-a, pa sirova TLS sonda testira drugi protokol na portu koji očekuje nešto drugo. Svaki zaključak iz nje odnosi se na sondu, a ne na tunel.

Zabilježite dva rezultata i držite ih odvojeno

Svježa dopuštena sesija stvara redak kontrolnog kanala koji navodi verziju protokola i odabranu šifru, te zaseban redak podatkovnog kanala koji navodi šifru tunela. Zabilježite oba s verzijom klijenta i nazivom profila te zapišite koja je instanca poslužitelja odgovorila:

openvpn --config office.ovpn --verb 4 2>&1 | tee session.txt

Zatim pročitajte ta dva retka iz te datoteke, a ne iz sjećanja. Par je dokaz; sam naziv skupa je preferencija, a granica verzije zasebna je tvrdnja o tome što poslužitelj odbija.

Provedite provjere ovim redom. Potvrdite gradnju i backend pomoću --version. Zabilježite --show-tls prije nego što išta promijenite. Navedite traženu donju granicu verzije odvojeno od popisa skupova. Potvrdite efektivnu politiku pokrenute instance s njezinim vlasnikom. Promatrajte jednu dopuštenu sesiju i, ako plan dopušta, jedan odbijeni pokušaj sa starijom verzijom. Zabilježite rezultate kontrolnog i podatkovnog kanala kao zasebne nalaze.

Ako potrebni klijent ne može ispuniti novi minimum, donesite tu odluku o migraciji ili iznimci izričito umjesto da tiho snizite nepovezano pravilo prihvaćanja kako bi uvođenje izgledalo dovršeno.

Povezani članci