DH-fil eller tls-auth-nøkkel? Skilje to OpenVPN-filer
Den eine fila inneheld offentlege gruppeparametrar, den andre er delt hemmeleg materiale. Tre vilkår avgjer kva direktiv kvar av dei høyrer til.
To filer, to direktiv og ein vane med å kalle begge etter det dei konfigurerer. Slik endar dh.pem på ei tls-auth-linje, og klienten feilar med ei melding om eit uventa nøkkelformat. Avgjerda framfor deg er ikkje kva fil som er sterkast. Det er kva rolle utrullinga faktisk treng, og tre vilkår avgjer det: kva nøkkelutveksling TLS-stakken din vil forhandle, om du i det heile vil ha autentisering av kontrollkanalen, og om materialet må halde fram med å vere hemmeleg.
Svar på dei i rekkjefølgje, og filspørsmålet svarar seg sjølv. Hopper du over dei, byrjar direktivnamna å sjå utbyttelege ut, og det er nettopp den tilstanden feilen kjem frå.
Les etiketten før filnamnet
Fyrste linje i fila er meir informativ enn namnet, fordi eit namn er ein menneskeleg konvensjon og etiketten blir produsert av verktøyet. Diffie-Hellman-parametrar ber ein PEM-etikett BEGIN DH PARAMETERS. Ein statisk OpenVPN-nøkkel er ein heilt annan struktur, med sin eigen header og hex-nyttelast.
Omdøyping konverterer ingenting. Ei parameterfil som heiter ta.key er framleis parametrar, og ein statisk nøkkel som heiter dh.pem er framleis ein statisk nøkkel; parsaren les innhaldet og avviser misforholdet. Kontroller før du redigerer profilen:
head -n 1 dh.pem
head -n 1 ta.keyTre vilkår som avgjer kva fil du treng
Det fyrste vilkåret er utvekslinga. Eit Diffie-Hellman-handtrykk i eit endeleg felt treng ei gruppe, og dh-direktivet er der tenaren namngjev parametrane for henne. Eit handtrykk på elliptisk kurve treng ikkje den fila i det heile, fordi kurva er parametersettet. Viss tenaren din berre forhandlar ECDHE-suitar, er ei DH-fil daudvekt i staden for ekstra styrke.
Det andre vilkåret er autentisering av kontrollkanalen, ein eigen funksjon med sitt eige materiale. Ei tls-auth-fil er ein delt statisk nøkkel som begge partar har, brukt til å signere kontrollkanalpakkar slik at ein uautentisert part ikkje eingong kan fullføre handtrykket. Ho finst uansett om du brukar DH i eit endeleg felt, og ho har ingenting med gruppeparametrane å gjere.
Det tredje vilkåret er hemmeleghald og distribusjon. DH-parametrar kan publiserast utan å svekkje sesjonen, fordi dei hemmelege verdiane blir genererte per handtrykk og aldri forlèt partane. Ein statisk nøkkel må ikkje publiserast: det er dei same byta i begge endar, han roterer ikkje av seg sjølv, og kven som helst som har han kan produsere gyldige signaturar for kontrollkanalen. Dei to svara peikar på heilt ulike handsamingsreglar, og difor kan den eine fila liggje i eit depot og den andre ikkje.
Generer riktig materiale for kvar rolle
Bruk verktøyet som produserer formatet direktivet ventar, i staden for å konvertere mellom dei. For den delte nøkkelen på OpenVPN 2.6 nemner den typa forma til generatoren føremålet eksplisitt.
openvpn --genkey tls-auth ta.keyDen kommandoen lagar nytt hemmeleg materiale; han reparerer eller inspiserer ikkje ein eksisterande nøkkel, og køyrer du han igjen får du ein annan nøkkel som dei andre partane ikkje har. Kopier den resulterande fila til partane som treng henne, gjennom ein kanal du ville brukt til kva som helst delt hemmelegheit, og hald retningskonvensjonen konsistent: med tls-auth brukar den eine sida key-direction 0 og den andre key-direction 1.
DH-parametrar kjem, når du treng dei, frå parametergenerering og ikkje frå ein nøkkelgenerator, og opphavet deira betyr noko sjølv om utdata er offentlege. Ei gruppe henta frå ein ukjend kjelde blir ikkje påliteleg av å vere offentleg; ho må framleis vere ei gruppe som partane dine er samde om, og ei som ikkje blir svekt av storleiken eller konstruksjonen.
Kva dh none betyr, og kva det ikkje betyr
dh none er eit ekte direktiv med ei snever tyding: inga parameterfil for endelege felt blir lasta, fordi handtrykket brukar Diffie-Hellman på elliptisk kurve. Det er ikkje ei forkorting for «hopp over DH-trinnet» i tydinga å svekkje noko, og det ber slett ikkje OpenVPN godta ei anna fil som erstatning.
To feil følgjer av å lese det feil. Den fyrste er å anta at dh none fjernar behovet for tls-auth, medan dei to styrer ulike ting. Den andre er å halde ei utdatert dh-linje ved sida av ein konfigurasjon med berre kurve og deretter lure på kva fil tenaren faktisk brukar; viss direktivet er der, blir fila lesen, og ein broten sti der får oppstarten til å feile av ein grunn som ikkje har noko med utvekslinga som skal forhandlast å gjere.
Viss feil fil allereie er rulle ut
Gjenopprett den tiltenkte hemmelegheita frå profileigaren og lat sertifikatverifiseringa vere i fred medan du gjer det. Feilen er eit formatmisforhold, ikkje ein tillitsfeil, og å slå av verifiseringa for å kome forbi feilen erstattar eit oppstartsproblem med eit stille eitt.
Skil deretter dei to hendingane folk har ein tendens til å slå saman. Å publisere ei DH-parameterfil er nesten ufarleg, fordi parametrane var offentlege av design. Å eksponere tls-auth-nøkkelen er ei anna hending: nøkkelen autentiserer kontrollkanalpakkar for kvar part som har han, så utskiftinga må koordinerast i heile utrullinga i staden for å bli brukt på éin vert.
Ein kontroll på fem minutt avgjer kva tilfelle du er i: les fyrste linje i kvar fil, stadfest direktivet som viser til henne, og stadfest at distribusjonen av fila svarar til det materialet krev. Det er eit mindre arbeid enn å gjenopprette ein fungerande PKI, og det er det dei tre vilkåra peika på heile tida.