OpenVPN tls-ciphersuites tsjin tls-version-min: wat elk ôftwingt
In TLS 1.3-suitelist beheint de protokolferzje net, en show-tls lit allinnich lokale stipe sjen. Kontrolearje belied, suites en ûnderhannele resultaten apart.
Trije ferskillende feiten wurde yn 'e measte OpenVPN-TLS-diskusjes ta ien rigel gearfoege: wat dyn kliïntbou dwaan kin, wat it profyl tastean en wat de sesje eins ûnderhannele hat. In koarte TLS 1.3-suitelist beantwurdet allinnich de middenfraach heal, en it seit neat oer de ûndergrins fan 'e protokolferzje. Wurkje de kontrôles hjirûnder yn folchoarder troch en stop by de earste dy't gjin stân hâldt, want elke lettere kontrôle ferûnderstelt dat de eardere regele binne.
Kontrolearje de bou foardatsto in list lêst
In konfiguraasjedirektive kin gjin protokolstipe tafoegje oan in binary dy't it net hat. Begjin mei de ferzjebanner, dy't de kompilearre kryptobibleteek neamt:
openvpn --version
In 2.6-bou keppele oan OpenSSL akseptearret sawol tls-cipher as tls-ciphersuites. In bou mei mbed TLS hat hielendal gjin TLS 1.3-suitekar, en de 2.6-hânlieding merket tls-ciphersuites oan as in OpenSSL-opsje. Wurdt de tsjinner mei in oare backend opnij boud, dan kin itselde profyl syn gedrach feroarje sûnder dat ien rigel konfiguraasje feroaret.
Wylstst hjir bist, rin openvpn --show-tls en hâld de útfier. It is de ynventaris dêr'tst letter mei fergelet, en it is goedkeap om dy fêst te lizzen foardat immen profylen begjint te bewurkjen.
Skriuw de banner en de list yn 'e feroaringsticket, net yn in petearfinster. As twa minsken ferskille oer de fraach oft in kliïnt oer seis wiken in suite biede kin, besljochtet de fêstleine útfier dat yn ien rigel.
Hâld ferzjegrinzen los fan sjiferlisten
Yn 'e 2.6-hânlieding binne dit trije kontrôles, net ien:
tls-cipherstelt it sjiferbelied foar TLS 1.2 en âlder yn, en wurdt trochjûn oan OpenSSL syn sjiferlist;tls-ciphersuiteskiest TLS 1.3-suites;tls-version-minentls-version-maxbeheine de protokolferzjes dy't de ferbining brûke mei.
In soarchfâldich besniene TLS 1.3-suitelist bewiist dus neat oer it feit dat in âldere ferzje noch tastien is. As de eask «allinnich TLS 1.3» is, dan draacht de ferzje-ûndergrins it, en de suitelist ferlingtet allinnich de karren binnen dy ûndergrins:
tls-version-min 1.3
tls-ciphersuites TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
Dat pear docht twa taken. Ien fan 'e rigels fuortsmite lit de oare minder ôftwinge assto tinkst, en dat is krekt it falen dêr't dizze hiele kontrôle foar bestiet.
It datakanaal is in fjirde kontrôle. data-ciphers ûnderhannelt de symmetryske sjifer binnen de tunnel, en syn resultaat seit neat oer de TLS-ferzje fan it kontrôlekanaal. AES-256-GCM yn 'e sesje-gearfetting sjen is yn gjin inkelde rjochting bewiis foar TLS 1.3.
Lês show-tls as in lokale ynventaris
--show-tls listet de suites op dy't stipe wurde troch de kryptobibleteek dêr't dizze binary oan keppele is, yn foarkarsfolchoarder. It is gjin rapport fan 'e gateway. De hânlieding seit eksplisyt dat de list fan 'e lokale bibleteek komt, wat betsjut dat in laptop mei OpenSSL 3.x en in router mei in âldere bou ferskillende listen printsje sille wylst se mei deselde tsjinner prate.
| 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 |
Stel dat in kliïnt suites A, B en C stipet en ien sesje kiest B. Dat befêstiget neat oer oft de tsjinner A of C tastiet, en neat oer oft B syn iennichste tastiene kar is. Hâld de trije rigen los, en de measte betiizjende TLS-triedden lossen harsels op.
De ynventaris is dochs de muoite wurdich om te hâlden. As in sesje mislearret, lit it fergelykjen fan 'e bibleteeklist mei de profylist sjen oft de kliïnt hielendal in kâns hie om oan te bieden wat de tsjinner woe. It lit ek sjen oft in backend-feroaring TLS_CHACHA20_POLY1305_SHA256 stilwei fuorthelle hat út 'e pool dêr't âldere kliïnten op fertrouwe — it soarte regression dat him sjen lit as in hantsjefol brûkers dy't net ferbine kinne, wylst alle oaren neat fernimme.
Freegje de gateway iets dat er beantwurdzje kin
Assto de tsjinst behearest, ûndersykje dan de effektive konfiguraasje fan 'e rinnende ynstânsje ynstee fan in bestân op 'e skiif. OpenVPN kin mei in oar --config-paad starten wêze, kin ynsletten helje, en is miskien net opnij starten sûnt de bewurking. It belied fan 'e rinnende daemon is wat kliïnten treffe.
Assto it net behearest, freegje de operator dan om stipe kliïnteasken of in beheind akseptaasjetest. In ôfwiisde poging is net automatysk in ôfwiisde suite: in ferzje-ûndergrins, sertifikaat-identiteitskontrôles lykas remote-cert-tls, of in mismatching tusken tls-auth en tls-crypt kin de útwikseling einigje foardat suitekar der ta docht. Lês de flater fan 'e tsjinner foardatsto de list fan 'e kliïnt feroarest, want «handshake failed» beslacht fjouwer ferskillende oarsaken en mar ien dêrfan is in sjifermismatching.
openssl s_client nei de VPN-poarte rjochtsje reprodusearret de fraach ek net. It kontrôlekanaal rint binnen OpenVPN syn eigen framing, dus in rauwe TLS-probe testet in oar protokol op in poarte dy't eat oars ferwachtet. Elke konklúzje dêroer giet oer de probe, net oer de tunnel.
Registrearje twa resultaten en hâld se los
In nije tastiene sesje produsearret in rigel fan it kontrôlekanaal dy't de protokolferzje en de keazen sjifer neamt, en in aparte rigel fan it datakanaal dy't de tunnelsjifer neamt. Fêstlizze beide mei de kliïntferzje en de profylnamme, en notearje hokker tsjinner-ynstânsje antwurde:
openvpn --config office.ovpn --verb 4 2>&1 | tee session.txt
Lês dan de twa rigels út dat bestân ynstee fan út it ûnthâld. It pear is it bewiis; in suitenamme allinnich is in foarkar, en de ferzjegrins is in aparte útspraak oer wat de tsjinner wegeret.
Doch de kontrôles yn dizze folchoarder. Befêstigje de bou en backend mei --version. Fêstlizze --show-tls foardatsto eat feroarest. Neam de fereaske ferzje-ûndergrins los fan 'e suitelist. Befêstigje it effektive belied fan 'e rinnende ynstânsje mei syn eigner. Observearje ien tastiene sesje en, as it plan it tasteit, ien ôfwiisde poging mei in âldere ferzje. Registrearje de resultaten fan it kontrôlekanaal en it datakanaal as aparte befynstigen.
As in fereaske kliïnt in nij minimum net helje kin, nim dan dy migraasje- of útsûnderingsbeslissing eksplisyt, ynstee fan stil in net-relatearre akseptaasjeregel te ferleegjen om de útrol klear lykje te litten.