tls-auth key-direction: 0 na 1 lazima zitofautiane, si zilingane
Kwa tls-auth pande zote mbili zinahitaji mielekeo kinyume, 0 na 1, au zote mbili ziachie mpangilio. Nambari hiyo hiyo inashindwa, na tls-crypt haitumii kamwe.
Upande mmoja wa handaki husaini chaneli ya udhibiti kwa nafasi ya ufunguo ambayo upande mwingine haukagui kamwe, na muunganisho hufa kwa hitilafu ya uthibitishaji kabla ya hata cheti kimoja kubadilishwa. Hivi ndivyo kutokulingana kwa mwelekeo kwenye tls-auth kunavyoonekana, na ni dhahiri: faili hizo mbili zilezile hushindwa katika kila jaribio, kutoka mtandao wowote. Hakuna kitu kwenye kumbukumbu kinachotaja chaguo unalotafuta, ndiyo sababu watu huunda funguo upya na kutoa vyeti upya ambavyo havikuwa vimeharibika kamwe. Suluhisho ni kufanya pande mbili ziwe za kuunganisha, au kuziacha zote mbili ziwe za mwelekeo miwili, badala ya kudhoofisha uthibitishaji.
Kushindwa hutokea kabla ya vyeti
Kwa tls-auth pande zote mbili zinashikilia ufunguo mmoja wa pamoja na kila moja hutumia nafasi moja kati ya mbili zinazotokana nao: nafasi moja husaini pakiti za udhibiti zinazotoka, nyingine huthibitisha zinazoingia. Mwelekeo 0 na mwelekeo 1 hupanga majukumu hayo kwa mpangilio kinyume, kwa hiyo jozi lazima iwe ya kuunganisha ili ukaguzi wa HMAC ulingane. Mpangilio unapogeuzwa upande mmoja, mpokeaji hutafuta sahihi kwenye nafasi isiyo sahihi na kukataa pakiti. Kikao huisha hapo, ndiyo sababu hitilafu inahusu uthibitishaji wa pakiti na si kitu ambacho hifadhi ya vyeti ingezalisha.
Udhahiri ni muhimu kwa utambuzi, kwa sababu tatizo la muda au njia huacha alama tofauti: kukatika kwa vipindi, mwelekeo mmoja kushindwa, au kikao kinachofa tu kwenye mtandao fulani. Kutokulingana kwa mwelekeo hushindwa kwenye makubaliano ya kwanza ya mikono kila mara, na hushindwa vivyo hivyo kwenye mashine nyingine iliyo na faili hizo mbili zilezile. Soma kumbukumbu kwenye --verb 4 na tafuta pakiti ya kwanza iliyokataliwa badala ya mstari wa mwisho. Ikiwa kukataliwa huko kunatokea kabla ya ubadilishaji wowote wa vyeti, ufunguo wa pamoja na mwelekeo wake ni mambo mawili yanayofaa kukaguliwa.
| 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 |
Nambari inaishi wapi
Mwongozo wa OpenVPN 2.6 unaandika maeneo mawili ya mwelekeo: hoja ya pili ya tls-auth ufunguo ukiwa kwenye faili yake, na mstari huru wa key-direction ufunguo ukiwa umeingizwa kwenye wasifu. Zote mbili huweka thamani moja, kwa hiyo wasifu unapaswa kutumia umbo moja au lingine, kamwe zote mbili. Kuacha pia ni chaguo, na huweka pande zote mbili katika mpangilio wa mwelekeo miwili unaofanya kazi pale ambapo hakuna upande unaotaja mwelekeo. Pande mbili zilizo na nambari moja haziko kwenye mpangilio huo: kila moja inatarajia kusaini kwenye nafasi moja na kuthibitisha kwenye nyingine, na zote mbili hufanya hivyo kwa namna moja.
# 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
Umbo lililoingizwa ni agizo kwenye mstari wake, si sifa kwenye lebo ya ufunguzi ya kizuizi cha ufunguo, na kuongeza hoja kwenye lebo hiyo ni hitilafu, si mabadiliko ya mwelekeo. Mahali pia ni muhimu: agizo liko nje ya kizuizi kinachomhusu, kwa hiyo thamani iliyoandikwa ndani ya kizuizi husomwa kama nyenzo ya ufunguo. Nakili mpangilio ambao msambazaji wa wasifu alikusudia badala ya kubuni jozi, kwa sababu wasifu unaofanya kazi dhidi ya seva moja huenda tayari umeakisiwa upande mwingine.
Chaguo haliache nini
Halisimbi trafiki ya programu. tls-auth huweka HMAC kuzunguka pakiti za chaneli ya udhibiti, wakati chaneli ya data inalindwa na funguo za kikao zilizojadiliwa wakati wa makubaliano ya mikono, kwa hiyo swali la upitishaji au sifa ya usimbaji halina uhusiano wowote na nambari ya mwelekeo. Mpangilio pia hauongezi tabaka la pili la usimbaji fiche, na dhana hiyo ndiyo inayowapeleka watu kutafuta ufunguo mrefu zaidi.
Hautumiki kwa tls-crypt, utaratibu mwingine wa chaneli ya udhibiti wenye chaguo na usimamizi wake wa funguo, na hausemi chochote kuhusu utambulisho wa cheti cha upande wowote. Kwa hiyo ulinganifu wa mwelekeo unaofanya kazi unathibitisha tu kwamba pande mbili zinakubaliana jinsi ya kuthibitisha chaneli ya udhibiti, si kwamba mnyororo wa uaminifu ulithibitishwa.
Panga jozi, kisha unganisha tena
Linganisha usanidi mbili kabla ya kubadilisha yoyote, kwa sababu kuhariri upande ambao tayari ulikuwa sahihi huongeza kazi mara mbili. Grep iliyo hapa chini inaonyesha ni utaratibu gani kila faili inachagua; uendeshaji wa kina unaonyesha kama chaneli ya udhibiti ilithibitishwa hata kidogo. Hifadhi matokeo yote mawili, ili mabadiliko yajayo yaweze kulinganishwa na hali inayojulikana.
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'
Anzisha upya pande zote mbili baada ya mabadiliko yoyote, kwa sababu chaguo hizi husomwa mara moja wakati wa kuanza na kupakia upya upande mmoja huacha jozi isiyolingana kwa muda wote wa kikao cha zamani. Ikiwa usambazaji kwa sasa unafanya kazi bila mwelekeo uliosanidiwa, kuongeza mpangilio kwenye upande mmoja huzalisha tena kushindwa ulikoanza nacho; ama ziache zote mbili au sanidi zote mbili. Badilisha mwisho mmoja kwa wakati na hifadhi faili ya awali, ili urejeshaji uwe wa dakika mbili na si ujenzi upya.
Andika utaratibu, faili ya ufunguo na mwelekeo kwa kila mwisho kwenye maelezo ya usambazaji, kwa sababu vinginevyo mtu anayefuata atasoma faili mbili zinazofanana na kudhani kwamba nambari zinapaswa kulingana. Mwelekeo ni maelezo ya uratibu, si uboreshaji wa usalama: hutenganisha mielekeo miwili ya chaneli ya udhibiti na haufanyi kitu kingine.