Памылка шыфра TLS у OpenVPN: спачатку параўнайце абодва бакі
Памылка «няма агульнага шыфра» адносіцца да кантрольнага канала TLS, а не да data-ciphers. Спачатку параўнайце версіі, потым спісы набораў, потым дакажыце перамову.
Памылка «няма агульнага шыфра» гучыць як адна налада, якую трэба змяніць, і налада, якую большасць людзей змяняе, — няправільная. OpenVPN трымае асобныя палітыкі для кантрольнага канала, які выконвае рукапацісканне TLS, і для канала даных, які пераносіць пакеты ўнутры тунеля, а памылка называе першы, пакуль людзі рэдагуюць другі. Параўнанне таго, што дазваляе кожны бок, у правільным парадку, ператварае здагадкі ў два ці тры рашэнні: версія, потым спіс набораў, потым уліковыя даныя.
Памыліцеся ў гэтым парадку — і можаце страціць гадзіну, дадаючы назву AES у спіс, да якога ніколі не звярталіся.
Два спісы шыфраў, і толькі адзін ламае рукапацісканне
Кантрольны канал дамаўляецца пра сеанс TLS, і яго палітыка запісваецца праз tls-cipher для TLS 1.2 і tls-ciphersuites для TLS 1.3. Канал даных наладжваецца асобна праз data-ciphers, дзе неадпаведнасць дае злучэнне, якое ўстанаўліваецца і потым не можа прапусціць трафік. Абодва даюць памылкі са згадкай шыфраў, таму іх блытаюць. Рукапацісканне, якое ніколі не завяршаецца, паказвае на кантрольны канал, а ўсталяваны тунель, які губляе пакеты, — на канал даных.
Чытайце ўсё паведамленне, а не першы радок. Неадпаведнасць версій, адсутны набор, алгарытм подпісу сертыфіката, які бок адхіляе, і няўдача праверкі імені хоста — усё сканчаецца памылкай TLS, і толькі адна з іх датычыцца вашага спіса набораў. Размежаванне гэтых катэгорый — большая частка дыягностыкі.
Параўнайце версіі раней, чым наборы
Бок, абмежаваны TLS 1.2, і бок, які патрабуе 1.3, не падзяляюць ніводнай версіі, і ніякі радок шыфра гэтага не злучыць. Запішыце tls-version-min і tls-version-max на абодвух баках, або прадвызначаныя значэнні выкарыстоўваных зборак, бо палітыка OpenSSL у дыстрыбутыве можа падняць мінімум без жадной опцыі OpenVPN. Калі адзін бок — прылада або старонні кліент, яго акно — тое, што дазваляе яго прашыўка. Параўнанне набораў мае сэнс толькі тады, калі акны перакрываюцца.
Гэтыя запісы павінны таксама называць фактычныя бінарнікі. Камандны openvpn на вашым ноўтбуку не абавязкова той кліент, які апрацоўвае імпартаваны профіль.
Спісы TLS 1.2 і TLS 1.3 не змешваюцца
Назвы набораў TLS 1.2 выглядаюць як ECDHE-RSA-AES256-GCM-SHA384 і належаць у tls-cipher, які прымае радок шыфра OpenSSL. Наборы TLS 1.3 называюцца як TLS_AES_256_GCM_SHA384 і належаць у tls-ciphersuites; даданне аднаго ў радок 1.2 не наладжвае спіс 1.3, і парсер можа прыняць тэкст, ніколі яго не супаставіўшы. Фільтр, правільны для адной версіі, нічога не кажа пра другую. Запішыце, для якой версіі прызначаны кожны спіс.
openvpn --show-tls друкуе тое, што падтрымлівае лакальная зборка, і гэта інвентар, а не абяцанне: аддалены бок можа не дазваляць гэтыя наборы, а актыўны профіль можа іх не ўключаць. Выкарыстайце яго, каб выключыць зборку, якая наогул не можа прапанаваць набор, а потым параўнайце наладжаныя спісы.
Дакажыце перамову на свежым злучэнні
Паспяховае рукапацісканне — адзіны доказ, які лічыцца, і ён павінен паходзіць ад сапраўднага кліента з сапраўдным профілем. Павялічце шматслоўнасць сервера, падключыцеся адзін раз і прачытайце з журнала ўзгодненыя версію пратакола і набор замест здагадкі, што перамагло першае прапанаванае значэнне. Затым асобна пацвердзіце канал даных трафікам праз тунель, бо працоўнае рукапацісканне і збойны канал даных — розныя рамонты. Паўтарыце пасля любой змены канфігурацыі, бо састарэлы профіль кліента — частая прычына ілжывага адмоўнага выніку.
Калі зацверджанай агульнай канфігурацыі няма, адказ — абнаўленне або план міграцыі, а не аслабленая палітыка. Зніжэнне tls-version-min, адключэнне праверкі або ўключэнне ўсіх састарэлых набораў прыбірае адмову, не задавальняючы патрабаванне бяспекі, якое яе выклікала.
Запішыце ўзгодненыя версію, набор і шыфр даных у тыкет змены. Наступны чалавек, які сутыкнецца з памылкай TLS, пачне з гэтага запісу, а не з радка шыфра, знойдзенага ў паведамленні на форуме.