Kolm erinevat fakti surutakse üheks reaks enamikus OpenVPN TLS-arutlustes: mida su kliendibuild suudab, mida profiil lubab ja mida sessioon tegelikult läbi rääkis. Lühike TLS 1.3 komplektide loend vastab ainult keskmisele küsimusele pooleldi ega ütle midagi protokolli versiooni alumise piiri kohta. Käi allolevad kontrollid järjekorras läbi ja peatu esimesel, mis ei pea, sest iga järgmine kontroll eeldab, et eelmised on lahendatud.

Kontrolli buildi enne, kui loed ükskõik millist loendit

Konfiguratsioonidirektiiv ei saa lisada binaarile protokollituge, mida sellel pole. Alusta versioonibännerist, mis nimetab kompileeritud krüptoteegi:

openvpn --version

OpenSSL-iga lingitud 2.6 build aktsepteerib nii tls-cipher kui ka tls-ciphersuites. mbed TLS-iga buildil pole üldse TLS 1.3 komplektide valikut ja 2.6 käsiraamat märgib tls-ciphersuites OpenSSL-i valikuks. Kui server on teise backendiga uuesti ehitatud, võib sama profiil käitumist muuta, ilma et ükski konfiguratsioonirida muutuks.

Kuni sa siin oled, käivita openvpn --show-tls ja hoia väljund alles. See on inventar, millega hiljem võrdled, ja selle jäädvustamine enne, kui keegi hakkab profiile muutma, on odav.

Kirjuta bänner ja loend muudatuse piletisse, mitte vestlusaknasse. Kui kaks inimest vaidlevad, kas klient suudab kuue nädala pärast komplekti pakkuda, otsustab jäädvustatud väljund selle ühe reaga.

Hoia versioonipiirid šifriloenditest eraldi

2.6 käsiraamatus on need kolm juhtelementi, mitte üks:

  • tls-cipher määrab šifripoliitika TLS 1.2 ja varasemate jaoks ning edastatakse OpenSSL-i šifriloendile;
  • tls-ciphersuites valib TLS 1.3 komplektid;
  • tls-version-min ja tls-version-max piiravad protokolliversioone, mida ühendus tohib kasutada.

Nii et hoolikalt kärbitud TLS 1.3 komplektide loend ei tõesta midagi selle kohta, et vanem versioon on endiselt lubatud. Kui nõue on „ainult TLS 1.3“, kannab seda versiooni alumine piir ja komplektide loend ainult kitsendab valikuid selle piiri sees:

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

See paar teeb kaks tööd. Ühe rea kustutamine jätab teise kehtestama vähem, kui sa arvad, ja täpselt see ongi tõrge, mille püüdmiseks kogu see kontroll olemas on.

Andmekanal on neljas juhtelement. data-ciphers räägib läbi sümmeetrilise šifri tunnelis ja selle tulemus ei ütle midagi juhtkanali TLS-versiooni kohta. AES-256-GCM-i nägemine sessiooni kokkuvõttes ei ole tõestus TLS 1.3 kohta kummaski suunas.

Loe show-tls-i kohaliku inventarina

--show-tls loetleb komplektid, mida toetab krüptoteek, millega see binaar on lingitud, eelistuste järjekorras. See ei ole gateway aruanne. Käsiraamat ütleb selgesõnaliselt, et loend pärineb kohalikust teegist, mis tähendab, et OpenSSL 3.x-iga sülearvuti ja vanema buildiga ruuter prindivad erinevad loendid, rääkides sama serveriga.

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

Oletame, et klient toetab komplekte A, B ja C ning üks sessioon valib B. See ei tuvasta midagi selle kohta, kas server lubab A või C, ega selle kohta, kas B on selle ainus lubatud valik. Hoia kolm rida lahus ja enamik segaseid TLS-lõime laheneb ise.

Inventari tasub siiski hoida. Kui sessioon ebaõnnestub, näitab teegi loendi võrdlemine profiili loendiga, kas kliendil oli üldse võimalus pakkuda seda, mida server tahtis. See näitab ka, kas backendimuudatus eemaldas vaikselt TLS_CHACHA20_POLY1305_SHA256 kogumist, millele vanemad kliendid tuginevad — seda tüüpi regressioon, mis ilmneb peotäie kasutajana, kes ei saa ühendust, samal ajal kui kõik teised ei märka midagi.

Küsi gateway-lt midagi, millele see oskab vastata

Kui haldad teenust, kontrolli töötava instantsi kehtivat konfiguratsiooni, mitte kettal olevat faili. OpenVPN võib olla käivitatud teise --config-teega, tõmmata kaasatud faile ja mitte olla pärast muudatust taaskäivitatud. Kliendid kohtavad töötava deemonipoliitikat.

Kui sa seda ei halda, küsi operaatorilt toetatud kliendinõudeid või piiratud vastuvõtutesti. Tagasilükatud katse ei ole automaatselt tagasilükatud komplekt: versiooni alumine piir, sertifikaadi identiteedi kontrollid nagu remote-cert-tls või tls-auth ja tls-crypt vaheline sobimatus võivad vahetuse lõpetada enne, kui komplekti valik üldse oluliseks muutub. Loe serveri viga enne kliendi loendi muutmist, sest «handshake failed» katab neli erinevat põhjust ja ainult üks neist on šifri sobimatus.

openssl s_client VPN-pordi suunas suunamine ei taasta samuti küsimust. Juhtkanal töötab OpenVPN-i enda raamistuses, seega toores TLS-sond testib teist protokolli pordil, mis ootab midagi muud. Iga sellest tehtud järeldus käib sondi, mitte tunneli kohta.

Salvesta kaks tulemust ja hoia need lahus

Värske lubatud sessioon loob juhtkanali rea, mis nimetab protokolliversiooni ja valitud šifri, ning eraldi andmekanali rea, mis nimetab tunneli šifri. Jäädvusta mõlemad kliendi versiooni ja profiili nimega ning märgi, milline serveri instants vastas:

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

Seejärel loe kaks rida sellest failist, mitte mälust. Paar on tõend; komplekti nimi üksi on eelistus ja versioonipiir on eraldi väide selle kohta, mida server keeldub.

Tee kontrollid selles järjekorras. Kinnita build ja backend --version-ga. Jäädvusta --show-tls enne millegi muutmist. Esita nõutav versiooni alumine piir komplektide loendist eraldi. Kinnita töötava instantsi kehtiv poliitika selle omanikuga. Vaata ühte lubatud sessiooni ja, kui plaan lubab, ühte tagasilükatud vanema versiooni katset. Salvesta juhtkanali ja andmekanali tulemused eraldi tähelepanekutena.

Kui nõutav klient ei suuda uut miinimumi täita, tee see migratsiooni- või erandotsus selgesõnaliselt, selle asemel et vaikselt langetada mitteseotud vastuvõtureeglit, et juurutus paistaks valmis.

Seotud artiklid