Chyba šifry TLS v OpenVPN: najprv porovnajte obe strany
Chyba „žiadna spoločná šifra“ patrí ku kontrolnému kanálu TLS, nie k data-ciphers. Najprv porovnajte verzie, potom zoznamy sád a napokon dokážte vyjednávanie.
Chyba „žiadna spoločná šifra“ znie ako jedno nastavenie, ktoré treba zmeniť, a nastavenie, ktoré mení väčšina ľudí, je to nesprávne. OpenVPN drží oddelené politiky pre kontrolný kanál, ktorý vykonáva TLS handshake, a pre dátový kanál, ktorý prenáša pakety vnútri tunela, a chyba pomenúva prvý, zatiaľ čo ľudia upravujú druhý. Porovnanie toho, čo každá strana povoľuje, v správnom poradí, mení hádanie na dve alebo tri rozhodnutia: verzia, potom zoznam sád, potom prihlasovacie údaje.
Ak si to poradie pomýlite, môžete stráviť hodinu pridávaním názvu AES do zoznamu, ktorý sa nikdy neprezeral.
Dva zoznamy šifier a len jeden pokazí handshake
Kontrolný kanál vyjednáva reláciu TLS a jeho politika sa zapisuje pomocou tls-cipher pre TLS 1.2 a tls-ciphersuites pre TLS 1.3. Dátový kanál sa nastavuje zvlášť pomocou data-ciphers, kde nezrovnalosť vytvorí spojenie, ktoré sa nadviaže a potom nedokáže prepustiť prevádzku. Obe produkujú chyby, ktoré spomínajú šifry, a preto sa zamieňajú. Handshake, ktorý sa nikdy nedokončí, ukazuje na kontrolný kanál, zatiaľ čo nadviazaný tunel, ktorý zahadzuje pakety, ukazuje na dátový kanál.
Čítajte celú správu, nie prvý riadok. Nezrovnalosť verzií, chýbajúca sada, algoritmus podpisu certifikátu, ktorý strana odmieta, a zlyhanie overenia názvu hostiteľa končia všetky chybou TLS a len jedna z nich sa týka vášho zoznamu sád. Rozlíšenie týchto kategórií je väčšina diagnózy.
Porovnajte verzie skôr, než porovnáte sady
Strana obmedzená na TLS 1.2 a strana vyžadujúca 1.3 nezdieľajú žiadnu verziu a žiadny reťazec šifier to nepremostí. Zapíšte tls-version-min a tls-version-max na oboch stranách alebo predvolené hodnoty použitých zostavení, pretože politika OpenSSL v distribúcii môže zvýšiť minimum bez toho, aby to nejaká voľba OpenVPN povedala. Ak je jedna strana zariadenie alebo klient tretej strany, jej okno je to, čo dovolí jej firmvér. Porovnanie sád má zmysel až vtedy, keď sa okná prekrývajú.
Tieto záznamy by mali uvádzať aj skutočné binárky. Príkazový openvpn na vašom notebooku nemusí byť klient, ktorý obsluhuje importovaný profil.
Zoznamy pre TLS 1.2 a TLS 1.3 sa nemiešajú
Názvy sád pre TLS 1.2 vyzerajú ako ECDHE-RSA-AES256-GCM-SHA384 a patria do tls-cipher, ktorý prijíma reťazec šifier OpenSSL. Sady TLS 1.3 sa volajú ako TLS_AES_256_GCM_SHA384 a patria do tls-ciphersuites; pridanie jednej do reťazca pre 1.2 nenastaví zoznam pre 1.3 a parser môže text prijať bez toho, aby ho kedy porovnal. Filter správny pre jednu verziu nehovorí nič o druhej. Zapíšte, pre ktorú verziu je ktorý zoznam určený.
openvpn --show-tls vypíše, čo miestne zostavenie podporuje, a to je inventár, nie sľub: vzdialená strana nemusí tieto sady povoľovať a aktívny profil ich nemusí zapínať. Použite ho na vylúčenie zostavenia, ktoré nevie ponúknuť žiadnu sadu, a potom porovnajte nakonfigurované zoznamy.
Dokážte vyjednávanie na novom spojení
Úspešný handshake je jediný dôkaz, ktorý sa počíta, a musí prísť od skutočného klienta so skutočným profilom. Zvýšte podrobnosť servera, pripojte sa raz a prečítajte z logu vyjednanú verziu protokolu a sadu, namiesto toho, aby ste predpokladali, že vyhrala prvá ponúknutá hodnota. Potom zvlášť potvrďte dátový kanál prevádzkou cez tunel, pretože funkčný handshake a zlyhávajúci dátový kanál sú rôzne opravy. Zopakujte po každej zmene konfigurácie, pretože zastaraný profil klienta je častý falošne negatívny výsledok.
Ak neexistuje schválená spoločná konfigurácia, odpoveďou je aktualizácia alebo plán migrácie, nie oslabená politika. Zníženie tls-version-min, vypnutie overovania alebo zapnutie všetkých starých sád odstráni odmietnutie bez splnenia bezpečnostnej požiadavky, ktorá ho vyvolala.
Zapíšte vyjednanú verziu, sadu a dátovú šifru do tiketu zmeny. Ďalší človek, ktorý narazí na chybu TLS, začne od tohto záznamu, nie od reťazca šifier nájdeného v príspevku na fóre.