To OpenVPN-certifikater, ét CCD-navn: hvad gik galt
Et serienummer er kun unikt inden for sin udsteder, mens OpenVPN vælger CCD-filen efter navn. Reserver det effektive navn ved tilmelding, og styr fornyelsen.
To klientcertifikater med forskellige serienumre, forskellige nøgler og endda forskellige fulde subjekter kan stadig ende i én enkelt politikfil, fordi serveren ikke kigger på nogen af delene. Den læser et navn ud af certifikatet og åbner den tilsvarende klientkonfigurationsfil. Hvis begge certifikater bærer samme navn, arver det andet det førstes politik i det øjeblik, det forbinder.
Sammenstødet opstår ved tilmelding og opdages først ved forbindelse, normalt når en enhed får en adresse eller et rutessæt, der tilhører en anden maskine. At forhindre det betyder at aftale, hvilket felt serveren mapper, og derefter reservere den værdi, før noget underskrives.
Dine certifikatværktøjer advarer dig ikke, fordi unikhed inde i X.509 og unikhed af et OpenVPN-politiknavn er forskellige krav, der håndhæves af forskellige systemer.
Serveren slår et navn op, ikke et fingeraftryk
Med den sædvanlige certifikatbaserede mapping tager serveren det fælles navn fra det fremviste certifikat og leder efter en fil med det navn i sin klientkonfigurationsmappe. Den fil kan fastgøre en statisk adresse, pushe ruter eller anvende firewallmærker for hver klient. Opslaget er en strengsammenligning mod et filnavn, så store og små bogstaver, mellemrum og tegnsætning betyder noget.
Nogle udrulninger bytter bevidst mappingen om, så et godkendt brugernavn overtager det fælles navn, og så er det brugernavnet, der skal være unikt. Uanset hvad er den værdi, der vælger politik, den værdi, du reserverer. Beslut, hvilken det er, før du udsteder noget; at gætte efter et sammenstød koster mere end at spørge.
Hvor to myndigheder passer på samme navn
En organisation, der accepterer certifikater fra mere end én udstedende myndighed, kører to uafhængige tilmeldingsprocesser, der skriver i ét navnerum. Hver myndigheds egne unikhedsregler gælder internt, så begge kan legitimt udstede til samme fælles navn, uden at nogen af dem bemærker noget galt.
Serienumre hjælper ikke. X.509 kræver, at et serienummer er unikt inden for sin udsteders område, hvilket er en egenskab ved den myndigheds bogholderi og ikke en global enhedsidentitet. Et subjektcheck er også en anden prøve end et fællesnavn-check: to certifikater kan dele et CN og alligevel afvige i organisationsenhed og derfor bære forskellige subjekter. Hver af disse egenskaber kan holde, mens serveren stadig mapper begge certifikater til ét filnavn.
OpenSSL CA-dokumentationen dækker unique_subject-indstillingen, der styrer dens egen databases mening, og det ærlige udgangspunkt er at læse din udstedelseskonfiguration i stedet for at antage, at en bestemt EasyRSA- eller OpenSSL-standard gælder.
Reserver det effektive navn før underskrift
Før et register, der mapper en enhed til dens godkendte post og derfra til et præcist politikfilnavn, så et navn tildeles én gang og forbliver tildelt. Reservationen skal være atomar, hvilket i praksis betyder en databaserestriktion eller en lås omkring trinnet tildel-og-undskriv, ikke et regneark, som to personer redigerer.
Gør derefter kontrollen til en del af udstedelsen: afvis at underskrive, når det ønskede navn allerede findes, og inkluder hver myndighed, som serveren stoler på, i den kontrol, fordi et navn reserveret af den anden myndighed er lige så taget. En afvist anmodning med en klar begrundelse er billigere end en sag om en enhed, der bliver ved med at få en andens statiske adresse.
Fornyelse genbruger et navn med vilje
Genudstedelse til en eksisterende enhed bør give et nyt serienummer under samme politiknavn, og det er legitim genbrug snarere end et sammenstød. Det, der skal besluttes på forhånd, er overlapningen: om gamle og nye certifikater må være gyldige samtidig, og hvordan den gamle legitimation trækkes tilbage.
Grib ikke efter duplicate-cn for at løse dette. Den serverindstilling styrer samtidige forbindelser, der fremviser samme navn; den låser ikke tilmeldingen, og at aktivere den gør ikke én delt statisk adresse sikker for to maskiner på én gang. Tilbagekaldelse identificerer normalt et certifikat ved udsteder og serienummer, så tilbagetrækning af den gamle legitimation behøver ikke ugyldiggøre dens erstatning, så længe serveren modtager og håndhæver de korrekte tilbagekaldelsesdata.
Bekræft mappingen med værktøjerne på maskinen
Før du giver en enhed dens nye legitimation, læs navnet ud af certifikatet, som serveren vil gøre, og sammenlign det derefter med den politikfil, du forventer bliver valgt.
openssl x509 -in device42.crt -noout -subject -nameopt sep_multiline
ls -l /etc/openvpn/ccd/device42
grep -n "duplicate-cn" /etc/openvpn/server.conf
Den første kommando udskriver subjektfelter separat, hvilket gør en vildfaren organisationsenhed eller et dobbelt mellemrum synligt med det samme. Den anden bekræfter, at der findes en politikfil under præcis det navn, og den tredje viser, om serveren er konfigureret til at tillade flere sessioner på ét navn. Kør alle tre mod et nyt certifikat, før det forlader tilmeldingsstrinnet, mens en fejl stadig koster en underskrift i stedet for en hændelse. Gem outputtet sammen med sagen, så den næste person kan se, hvilket navn serveren faktisk fik.
Slut af med en rigtig forbindelse og sammenlign den tildelte adresse og de pushede ruter med politikfilen i stedet for med det, du mente at skrive. Hvis to enheder rapporterer samme statiske adresse, har registeret et sammenstød, som ingen certifikatinspektion nogensinde vil afsløre.