OpenVPN tls-ciphersuites kontra tls-version-min: kva kvar handhevar
Ei liste over TLS 1.3-svitar avgrensar ikkje protokollversjonen, og show-tls viser berre lokal støtte. Kontroller policy, svitar og forhandla resultat kvar for seg.
Tre ulike fakta blir pressa saman til éi line i dei fleste OpenVPN-TLS-diskusjonane: kva klientbygginga di kan, kva profilen tillèt, og kva økta faktisk forhandla. Ei kort liste over TLS 1.3-svitar svarar berre halvvegs på det midtarste spørsmålet, og ho seier ingenting om golvet for protokollversjonen. Gå gjennom kontrollane nedanfor i rekkjefølgje og stopp ved den første som ikkje held, fordi kvar seinare kontroll føreset at dei tidlegare er avklara.
Kontroller bygginga før du les noka liste
Eit konfigurasjonsdirektiv kan ikkje leggje til protokollstøtte i ei binærfil som manglar det. Start med versjonsbanneret, som namngjev det kompilerte kryptobiblioteket:
openvpn --version
Ei 2.6-bygging lenkja mot OpenSSL godtek både tls-cipher og tls-ciphersuites. Ei bygging mot mbed TLS har ingen val av TLS 1.3-svitar i det heile, og 2.6-handboka merkjer tls-ciphersuites som eit OpenSSL-alternativ. Viss tenaren blir bygd på nytt med ein annan backend, kan same profil endre åtferd utan at éi einaste konfigurasjonsline blir endra.
Medan du er her, køyr openvpn --show-tls og ta vare på utdata. Det er inventaret du seinare skal samanlikne mot, og det er billeg å fange det før nokon byrjar å redigere profilar.
Skriv banneret og lista inn i endringssaka, ikkje i eit chattevindauge. Når to personar kranglar om ein klient kan tilby ein svit om seks veker, avgjer dei fanga utdataa det på éi line.
Hald versjonsgrenser skilde frå sifferlister
I 2.6-handboka er desse tre kontrollar, ikkje éin:
tls-cipherset sifferpolicyen for TLS 1.2 og eldre, og blir send vidare til sifferlista til OpenSSL;tls-ciphersuitesvel TLS 1.3-svitar;tls-version-minogtls-version-maxavgrensar protokollversjonane sambandet kan bruke.
Ei nøye trimma liste over TLS 1.3-svitar provar altså ingenting om at ein eldre versjon framleis er tillaten. Viss kravet er «berre TLS 1.3», er det versjonsgolvet som ber det, og svitelista snevrar berre inn vala innanfor det golvet:
tls-version-min 1.3
tls-ciphersuites TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
Det paret gjer to jobbar. Slettar ein éi av linjene, handhevar den andre mindre enn du trur, og det er nettopp feilen heile denne kontrollen finst for å fange.
Datakanalen er ein fjerde kontroll. data-ciphers forhandlar den symmetriske sifferen inne i tunnelen, og resultatet seier ingenting om TLS-versjonen til kontrollkanalen. Å sjå AES-256-GCM i øktsamandraget er ikkje prov for TLS 1.3 i noka retning.
Les show-tls som eit lokalt inventar
--show-tls viser svitane som kryptobiblioteket denne binærfilen er lenkja mot støttar, i preferanserekkjefølgje. Det er ikkje ein rapport frå gatewayen. Handboka seier eksplisitt at lista kjem frå det lokale biblioteket, noko som tyder at ein berbar PC med OpenSSL 3.x og ein ruter med eldre bygging vil skrive ut ulike lister medan dei snakkar med same tenar.
| 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 |
Anta at ein klient støttar svitane A, B og C, og at éi økt vel B. Det fastslår ingenting om korvidt tenaren tillèt A eller C, og ingenting om korvidt B er det einaste tillatne valet. Hald dei tre radene skilde, og dei fleste forvirrande TLS-trådane løyser seg sjølve.
Inventaret er likevel verdt å ta vare på. Når ei økt feilar, viser samanlikninga av bibliotekslista med profillista om klienten i det heile hadde ein sjanse til å tilby det tenaren ville ha. Ho viser også om ei backend-endring stille har fjerna TLS_CHACHA20_POLY1305_SHA256 frå bassenget eldre klientar er avhengige av — den typen regresjon som viser seg som ein handfull brukarar som ikkje får kopla til, medan alle andre ikkje merkar noko.
Spør gatewayen om noko han kan svare på
Viss du administrerer tenesta, gransk den køyrande instansen sin effektive konfigurasjon i staden for ei fil på disken. OpenVPN kan ha blitt starta med ein annan --config-sti, kan hente inkluderingar, og er kanskje ikkje restart a siden endringa. Det er policyen til den køyrande daemonen klientane møter.
Viss du ikkje administrerer han, spør operatøren om støtta klientkrav eller ein avgrensa aksepttest. Eit avvist forsøk er ikkje automatisk ein avvist svit: eit versjonsgolv, sertifikatidentitetskontrollar som remote-cert-tls, eller eit misforhold mellom tls-auth og tls-crypt kan avslutte utvekslinga før svitvalet blir relevant. Les feilen til tenaren før du endrar lista til klienten, fordi «handshake failed» dekkjer fire ulike årsaker, og berre éi av dei er eit siffermisforhold.
Å peike openssl s_client mot VPN-porten gjenskaper heller ikkje spørsmålet. Kontrollkanalen går inne i OpenVPN si eiga innramming, så ein rå TLS-probe testar ein annan protokoll på ein port som ventar noko anna. Kvar konklusjon derfrå handlar om proben, ikkje om tunnelen.
Registrer to resultat og hald dei skilde
Ei fersk tillaten økt gir ei kontrollkanalline som namngjev protokollversjonen og den valde sifferen, og ei eiga datakanalline som namngjev sifferen til tunnelen. Fang begge med klientversjonen og profilnamnet, og noter kva tenarinstans som svara:
openvpn --config office.ovpn --verb 4 2>&1 | tee session.txt
Les deretter dei to linjene frå den fila i staden for frå minnet. Paret er provet; eit svitenamn åleine er ein preferanse, og versjonsgrensa er ei separat utsegn om kva tenaren avviser.
Utfør kontrollane i denne rekkjefølgja. Stadfest bygginga og backend med --version. Fang --show-tls før du endrar noko. Oppgi det påkravde versjonsgolvet skilt frå svitelista. Stadfest den effektive policyen til den køyrande instansen med eigaren. Observer éi tillaten økt og, viss planen tillèt det, eitt avvist forsøk med ein eldre versjon. Registrer resultata for kontrollkanalen og datakanalen som separate funn.
Viss ein påkravd klient ikkje kan oppfylle eit nytt minimum, ta den migrerings- eller unntaksavgjerda eksplisitt i staden for å senke ein urelatert akseptregel i stillheit for at utrullinga skal sjå ferdig ut.