tls-auth key-direction: 0 жана 1 айырмаланышы керек, дал келбеши
tls-auth менен эки тарапка карама-каршы багыттар керек, 0 жана 1, же экөө тең параметрди калтырышы керек. Ошол эле сан ийгиликсиз болот, ал эми tls-crypt аны эч качан колдонбойт.
Туннелдин бир тарабы башка тарап эч качан текшербеген ачкыч слоту менен башкаруу каналына кол коёт, жана бир да сертификат алмашылбай туруп байланыш аутентификация катасы менен өлөт. tls-auth багытынын дал келбестиги ушундай көрүнөт жана ал детерминдүү: ошол эки файл ар бир аракетте, каалаган тармактан ийгиликсиз болот. Журналда издеп жаткан параметриңиздин аты жок, ошондуктан адамдар эч качан бузулбаган ачкычтарды кайра жасашат жана сертификаттарды кайра чыгарышат. Чечим — эки тарапты толуктоочу кылуу же экөөнү тең эки багыттуу калтыруу, текшерүүнү алсыратуу эмес.
Ийгиликсиздик сертификаттарга чейин болот
tls-auth менен эки тарап тең бирдей жалпы ачкычты кармашат жана ар бири андан алынган эки слоттун бирин колдонот: бир слот чыгуучу башкаруу пакеттерине кол коёт, экинчиси кирүүчү пакеттерди текшерет. 0 багыты жана 1 багыты бул ролдорду тескери тартипте дайындайт, ошондуктан HMAC текшерүүлөрү дал келиши үчүн жуп толуктоочу болушу керек. Бир тарапта дайындоо тескери бурулса, кабыл алуучу туура эмес слоттон кол тамга издеп, пакетти четке кагат. Сессия ошол жерде бүтөт, ошондуктан ката пакеттердин аутентификациясына тиешелүү, сертификат кампасы чыгара турган нерсеге эмес.
Детерминдүүлүк диагностика үчүн маанилүү, анткени убакыт же жол маселеси башка из калтырат: үзгүлтүктүү үзүлүүлөр, бир багыттын ийгиликсиздиги же белгилүү бир тармакта гана өлгөн сессия. Багыт дал келбестиги ар бир жолу биринчи кол алышууда ийгиликсиз болот жана ошол эки файлды кармаган башка машинада дал ушундай ийгиликсиз болот. Журналды --verb 4 боюнча окуңуз жана акыркы саптын ордуна биринчи четке кагылган пакетти табыңыз. Эгер бул четке кагуу кандайдыр бир сертификат алмашуудан мурун болсо, жалпы ачкыч жана анын багыты текшерүүгө татыктуу эки нерсе.
| What you see | What it rules out | Next check |
|---|---|---|
| Authentication error before any certificate is sent | The data channel is irrelevant; the control channel never authenticated | Compare tls-auth and its direction on both ends |
| Certificate or handshake failure after the control channel authenticates | The shared key and its direction already agree | Check the CA, the certificate dates and the hostname |
| Session completes but throughput or cipher warnings appear | Direction was never the problem | Compare the data-channel cipher settings |
| Startup stops on an options error | The number itself is not the issue | Re-read the inline versus external directive syntax |
Сан кайда жашайт
Нускама OpenVPN 2.6 багыт үчүн эки орунду документтейт: ачкыч өзүнчө файлда болгондо tls-auth параметринин экинчи аргументи жана ачкыч профилге киргизилгенде өзүнчө key-direction сабы. Экөө тең бирдей маанини коюшат, ошондуктан профиль бир форманы же экинчисин колдонушу керек, эч качан экөөнү тең эмес. Өткөрүп жиберүү да тандоо, жана ал эки тарапты эч бир тарап багыт атабаганда иштеген эки багыттуу жайгашууга коёт. Бирдей сандагы эки тарап бул жайгашууда эмес: ар бири бир слотто кол коюуну жана экинчисинде текшерүүнү күтөт, жана экөө тең муну бирдей жасашат.
# server.conf, external key tls-auth ta.key 0 # client.ovpn, external key tls-auth ta.key 1 # client.ovpn, inline key key-direction 1
Киргизилген форма — өзүнчө саптагы директива, ачкыч блокусунун ачылыш тегиндеги атрибут эмес, жана ошол тегге аргумент кошуу ката, багытты өзгөртүү эмес. Жайгашуу да маанилүү: директива өзү таандык блоктун сыртында турат, ошондуктан блоктун ичинде жазылган маани ачкыч материалы катары окулат. Профиль тараткычы көздөгөн жайгашууну көчүрүңүз, жуп ойлоп таппаңыз, анткени бир серверге каршы иштеген профиль экинчи тарапта буга чейин эле чагылдырылган болушу мүмкүн.
Параметр эмнени тийбейт
Ал колдонмо трафигин шифрлебейт. tls-auth башкаруу каналынын пакеттеринин айланасына HMAC коёт, ал эми дайындар каналы кол алышуу учурунда келишилген сессиялык ачкычтар менен корголот, ошондуктан өткөрүү жөндөмү же шифр тууралуу суроонун багыт санына тиешеси жок. Параметр экинчи шифрлөө катмарын да кошпойт, жана адамдарды узунураак ачкыч издеп кетирген дал ошол божомол.
Ал tls-crypt үчүн колдонулбайт, өз параметрлери жана ачкыч иштетүүсү бар башка башкаруу каналы механизми, жана каалаган тараптын сертификат идентификациясы жөнүндө эч нерсе айтпайт. Ошондуктан иштеген багыт дал келиши эки тараптын башкаруу каналын кантип аутентификациялоо керектиги боюнча макулдашканын гана далилдейт, ишеним чынжырынын текшерилгенин эмес.
Жупту теңдештириңиз, анан кайра туташыңыз
Каалаган бирин өзгөртүүдөн мурун эки конфигурацияны салыштырыңыз, анткени буга чейин туура болгон тарапты оңдоо ишти эки эсе көбөйтөт. Төмөнкү grep ар бир файлдын кайсы механизмди тандаарын көрсөтөт; толук иштетүү башкаруу каналынын жалпы аутентификацияланганын көрсөтөт. Эки чыгышты тең сактаңыз, кийинки өзгөртүү белгилүү абал менен салыштырылсын.
grep -n -E 'tls-auth|tls-crypt|key-direction' server.conf client.ovpn openvpn --config client.ovpn --verb 4 2>&1 | grep -i -E 'hmac|tls error|control channel'
Каалаган өзгөртүүдөн кийин эки тарапты тең кайра иштетиңиз, анткени бул параметрлер иштетилгенде бир жолу окулат жана бир тарапты кайра жүктөө жупту эски сессиянын бүт өмүрү бою ыраатсыз калтырат. Эгер жайгаштыруу азыр багыт конфигурацияланбай иштеп жатса, параметрди бир тарапка кошуу сиз баштаган ийгиликсиздикти кайра жаратат; же экөөнү тең калтырыңыз, же экөөнү тең конфигурациялаңыз. Бир убакта бир четин өзгөртүңүз жана мурунку файлды сактаңыз, регрессия кайра куруу эмес, эки мүнөттүк кайтаруу болсун.
Ар бир чет үчүн механизмди, ачкыч файлын жана багытты жайгаштыруу жазууларына жазыңыз, антпесе кийинки адам эки окшош файлды окуп, сандар бири-бирине дал келиши керек деп ойлойт. Багыт — координациялоо деталы, коопсуздукту жакшыртуу эмес: ал башкаруу каналынын эки багытын бөлөт жана башка эч нерсе кылбайт.