OpenVPN TLS-i šifriviga: kõigepealt võrdle mõlemat poolt
Viga „ühine šiffer puudub“ kuulub TLS-i juhtkanali, mitte data-ciphers'i juurde. Kõigepealt võrdle versioone, seejärel komplektide loendeid ja lõpuks tõesta läbirääkimine.
Viga „ühine šiffer puudub“ kõlab nii, nagu muudetaks üht seadet, ja seade, mida enamik inimesi muudab, on vale. OpenVPN hoiab eraldi poliitikaid juhtkanali jaoks, mis teeb TLS-i kätluse, ja andmekanali jaoks, mis kannab pakette tunnelis, ning viga nimetab esimest, samal ajal kui inimesed muudavad teist. Selle võrdlemine, mida kumbki pool lubab, õiges järjekorras, muudab oletamise kaheks või kolmeks otsuseks: versioon, seejärel komplektide loend, siis volitused.
Kui selle järjekorra vale teed, võid kulutada tunni, lisades AES-i nime loendisse, mida ei ole kunagi vaadatud.
Kaks šifriloendit ja ainult üks rikub kätluse
Juhtkanal peab läbirääkimisi TLS-i sessiooni üle ja selle poliitika kirjutatakse vahendiga tls-cipher TLS 1.2 jaoks ja tls-ciphersuites TLS 1.3 jaoks. Andmekanal seadistatakse eraldi vahendiga data-ciphers, kus lahknevus annab ühenduse, mis luuakse ja seejärel ei suuda liiklust läbi lasta. Mõlemad annavad vigu, mis mainivad šifreid, ja seetõttu aetakse need segi. Kätlus, mis ei lõpe kunagi, osutab juhtkanalile, samas kui loodud tunnel, mis pakette kaotab, osutab andmekanalile.
Loe tervet teadet, mitte esimest rida. Versiooni lahknevus, puuduv komplekt, sertifikaadi allkirja algoritm, mille pool tagasi lükkab, ja hostinime kontrolli ebaõnnestumine lõpevad kõik TLS-i veaga ning ainult üks neist puudutab sinu komplektide loendit. Nende kategooriate eristamine on suurem osa diagnoosist.
Võrdle versioone enne, kui võrdled komplekte
TLS-iga 1.2 piiratud pool ja pool, mis nõuab 1.3, ei jaga ühtegi versiooni ja ükski šifri string ei silluta seda. Kirjuta üles tls-version-min ja tls-version-max mõlemal poolel või kasutatavate build'ide vaikeväärtused, sest distributsiooni OpenSSL-i poliitika võib alampiiri tõsta, ilma et ükski OpenVPN-i valik seda ütleks. Kui üks pool on seade või kolmanda osapoole klient, on tema aken see, mida tema püsivara lubab. Alles siis, kui aknad kattuvad, tähendab komplektide võrdlus midagi.
Need kirjed peaksid nimetama ka tegelikke binaarfaile. Käsurea openvpn sinu sülearvutis ei ole tingimata klient, mis haldab imporditud profiili.
TLS 1.2 ja TLS 1.3 loendid ei segune
TLS 1.2 komplektide nimed näevad välja nagu ECDHE-RSA-AES256-GCM-SHA384 ja kuuluvad tls-cipher-i, mis võtab vastu OpenSSL-i šifri stringi. TLS 1.3 komplektid on nimega TLS_AES_256_GCM_SHA384 ning kuuluvad tls-ciphersuites-i; ühe lisamine 1.2 stringi ei seadista 1.3 loendit ja parser võib teksti vastu võtta, ilma et see kunagi sobiks. Ühe versiooni jaoks õige filter ei ütle teise kohta midagi. Kirjuta üles, millise versiooni jaoks kumbki loend on mõeldud.
openvpn --show-tls trükib välja, mida kohalik build toetab, ja see on loend, mitte lubadus: kaugpool ei pruugi neid komplekte lubada ja aktiivne profiil ei pruugi neid sisse lülitada. Kasuta seda, et välistada build, mis ei suuda ühtegi komplekti pakkuda, ja seejärel võrdle seadistatud loendeid.
Tõesta läbirääkimine värskel ühendusel
Edukas kätlus on ainus tõend, mis loeb, ja see peab tulema päris kliendilt päris profiiliga. Tõsta serveri detailsust, ühendu korra ja loe logist läbiräägitud protokolli versioon ja komplekt, selle asemel et eeldada, et võitis esimene pakutud väärtus. Seejärel kinnita andmekanal eraldi liiklusega läbi tunneli, sest töötav kätlus ja nurjuv andmekanal on erinevad parandused. Korda pärast iga seadistuse muudatust, sest aegunud kliendiprofiil on tavaline valenegatiivne tulemus.
Kui kinnitatud ühist seadistust ei ole, on vastuseks uuendus või migratsiooniplaan, mitte nõrgendatud poliitika. tls-version-min-i langetamine, kontrolli väljalülitamine või kõigi vanade komplektide lubamine eemaldab tagasilükkamise, täitmata turvanõuet, mis selle tekitas.
Kirjuta läbiräägitud versioon, komplekt ja andmešiffer muudatuse piletisse. Järgmine inimene, kes TLS-i vea otsa satub, alustab sellest kirjest, mitte foorumipostitusest leitud šifri stringist.