Файл DH ці ключ tls-auth? Як адрозніць два файлы OpenVPN
Адзін файл захоўвае публічныя параметры групы, другі — агульны сакрэтны матэрыял. Тры ўмовы вызначаюць, да якой дырэктывы належыць кожны.
Два файлы, дзве дырэктывы і звычка называць абодва ў гонар таго, што яны наладжваюць. Менавіта так dh.pem трапляе ў радок tls-auth, а кліент падае з паведамленнем пра нечаканы фармат ключа. Рашэнне перад вамі не пра тое, які файл мацнейшы. Яно пра тое, якая роля патрэбна разгортванню, і тры ўмовы вырашаюць гэта: які абмен ключамі будзе ўзгадняць ваш стек TLS, ці патрэбна вам аўтэнтыфікацыя кантрольнага канала наогул і ці мусіць матэрыял заставацца сакрэтным.
Адказвайце па парадку, і пытанне пра файл адкажа само. Прапусціце іх — і назвы дырэктыў пачнуць выглядаць узаемазаменнымі, а менавіта з гэтага стану і паўстае памылка.
Чытайце этыкетку раней за назву файла
Першы радок файла інфарматыўнейшы за яго назву, бо назва — чалавечая ўмоўнасць, а этыкетку стварае інструмент. Параметры Diffie-Hellman маюць этыкетку PEM BEGIN DH PARAMETERS. Статычны ключ OpenVPN — зусім іншая структура, са сваёй галавой і шаснаццатковым карысным нагрузам.
Перайменаванне нічога не канвертуе. Файл параметраў з назвай ta.key застаецца параметрамі, а статычны ключ з назвай dh.pem застаецца статычным ключом; парсер чытае змест і адхіляе няўзгодненасць. Праверце перад рэдагаваннем профілю:
head -n 1 dh.pem
head -n 1 ta.keyТры ўмовы, якія вызначаюць патрэбны файл
Умова першая — абмен. Рукапоціск Diffie-Hellman у канечным полі патрабуе групы, і дырэктыва dh — гэта месца, дзе сервер называе для яе параметры. Рукапоціску на эліптычнай крывой той файл зусім не патрэбны, бо крывая і ёсць набор параметраў. Калі ваш сервер узгадняе толькі наборы ECDHE, файл DH — мёртвая вага, а не дадатковая трываласць.
Умова другая — аўтэнтыфікацыя кантрольнага канала, асобная функцыя са сваім матэрыялам. Файл tls-auth — гэта агульны статычны ключ, які маюць абодва бакі і якім падпісваюць пакеты кантрольнага канала, каб неаўтэнтыфікаваны бок нават не мог завяршыць рукапоціск. Ён існуе незалежна ад таго, ці выкарыстоўваеце вы DH у канечным полі, і не звязаны з параметрамі групы.
Умова трэцяя — сакрэтнасць і раздача. Параметры DH можна публікаваць без аслаблення сесіі, бо сакрэтныя значэнні генеравацца на кожны рукапоціск і ніколі не пакідаюць бакоў. Статычны ключ публікаваць нельга: гэта адны і тыя ж байты на абодвух канцах, ён не змяняецца сам, і любы, хто яго мае, можа ствараць сапраўдныя подпісы кантрольнага канала. Гэтыя два адказы вядуць да цалкам розных правілаў абыходжання, таму адзін файл можа ляжаць у рэпазітары, а другі — не.
Стварайце правільны матэрыял для кожнай ролі
Карыстайцеся інструментам, які стварае фармат, чаканы дырэктывай, а не канвертуйце паміж імі. Для агульнага ключа ў OpenVPN 2.6 тыпаваная форма генератара яўна называе прызначэнне.
openvpn --genkey tls-auth ta.keyГэтая каманда стварае новы сакрэтны матэрыял; яна не рамантуе і не правярае існуючы ключ, а паўторны запуск дасць іншы ключ, якога ў іншых бакоў няма. Скапіруйце атрыманы файл тым бакам, якім ён патрэбны, праз канал, які вы выкарыстоўвалі б для любой агульнай тайны, і трымайце ўмову напрамку паслядоўнай: з tls-auth адзін бок выкарыстоўвае key-direction 0, а другі — key-direction 1.
Параметры DH, калі яны патрэбны, паходзяць з генерацыі параметраў, а не з генератара ключоў, і іх паходжанне важнае нават тады, калі вынік публічны. Група, узятая з невядомай крыніцы, не становіцца надзейнай ад таго, што яна публічная; яна ўсё яшчэ мусіць быць групай, з якой згодны ваш бакі, і такой, якую не аслабляюць яе памер ці будова.
Што значыць dh none і што не
dh none гэта сапраўдная дырэктыва з вузкім сэнсам: файл параметраў канечнага поля не будзе загружаны, бо рукапоціск выкарыстоўвае Diffie-Hellman на эліптычнай крывой. Гэта не скарот для «прапусціць крок DH» у сэнсе аслаблення чаго-небудзь, і яна аніяк не кажа OpenVPN прымаць нейкі іншы файл за замену.
З няправільнага прачытання вынікаюць дзве памылкі. Першая — меркаваць, што dh none здымае патрэбу ў tls-auth, хоць гэтыя дзве рэчы кіруюць рознымі. Другая — трымаць састарэлы радок dh побач з канфігурацыяй толькі на крывой і потым пытацца, які файл сервер насамрэч выкарыстоўвае; калі дырэктыва ёсць, файл чытаецца, і зламаны шлях там валіць запуск з прычыны, не звязанай з абменам, які будзе ўзгоднены.
Калі няправільны файл ужо разгорнуты
Аднавіце патрэбную тайну ва ўладальніка профілю і не чапайце праверку сертыфіката, пакуль гэта робіце. Збой — гэта неадпаведнасць фармату, а не збой даверу, і адключэнне праверкі, каб абысці памылку, замяняе праблему запуску на бясшумную.
Затым раздзяліце дзве здарэнні, якія людзі схільныя зліваць. Публікацыя файла параметраў DH амаль бясшкодная, бо параметры былі публічнымі па задуме. Выкрыццё ключа tls-auth — іншая падзея: ключ аўтэнтыфікуе пакеты кантрольнага канала для кожнага боку, які яго мае, таму замену трэба ўзгадняць па ўсім разгортванні, а не ўжываць на адным хосце.
Пяціхвілінная праверка вырашае, які вы выпадак: прачытайце першы радок кожнага файла, пацвердзіце дырэктыву, якая спасылаецца на яго, і пацвердзіце, што раздача файла адпавядае патрабаванням матэрыялу. Гэта меншая праца, чым перастварыць працоўную PKI, і менавіта да яе ўвесь час вялі тры ўмовы.