To klientsertifikater med ulike serienumre, ulike nøkler og til og med ulike fulle subjekter kan fortsatt ende i samme policyfil, fordi serveren ikke ser på noe av det. Den leser et navn fra sertifikatet og åpner den tilhørende klientkonfigurasjonsfilen. Hvis begge sertifikatene bærer samme navn, arver det andre det førstes policy i det øyeblikket det kobler til.

Kollisjonen oppstår ved påmelding og oppdages først ved tilkobling, vanligvis når en enhet får en adresse eller et rutessett som tilhører en annen maskin. Å forhindre det betyr å bli enige om hvilket felt serveren mapper, og deretter reservere den verdien før noe signeres.

Sertifikatverktøyene dine advarer deg ikke, fordi unikhet inne i X.509 og unikhet av et OpenVPN-policynavn er forskjellige krav som håndheves av forskjellige systemer.

Serveren slår opp et navn, ikke et fingeravtrykk

Med den vanlige sertifikatbaserte mappingen tar serveren det vanlige navnet fra sertifikatet som presenteres, og ser etter en fil med det navnet i klientkonfigurasjonskatalogen sin. Den filen kan feste en statisk adresse, pushe ruter eller bruke brannmurmerker per klient. Oppslaget er en strengsammenligning mot et filnavn, så store og små bokstaver, mellomrom og tegnsetting spiller alle en rolle.

Noen utrullinger bytter bevisst om mappingen slik at et autentisert brukernavn overtar det vanlige navnet, og da er det brukernavnet som må være unikt. Uansett er verdien som velger policy, den verdien du reserverer. Bestem hvilken det er før du utsteder noe; å gjette etter en kollisjon koster mer enn å spørre.

Der to myndigheter treffer samme navn

En organisasjon som godtar sertifikater fra mer enn én utstedende myndighet, driver to uavhengige påmeldingsprosesser som skriver i ett navnerom. Hver myndighets egne unikhetsregler gjelder internt, så begge kan lovlig utstede for samme vanlige navn uten at noen av dem merker noe galt.

Serienumre hjelper ikke. X.509 krever at et serienummer er unikt innenfor utstederens område, noe som er en egenskap ved den myndighetens regnskap og ikke en global enhetsidentitet. En subjektkontroll er også en annen test enn en vanlig-navn-kontroll: to sertifikater kan dele en CN og likevel avvike i organisasjonsenhet og derfor bære ulike subjekter. Hver av disse egenskapene kan holde mens serveren fortsatt mapper begge sertifikatene til ett filnavn.

OpenSSL CA-dokumentasjonen dekker innstillingen unique_subject som styrer dens egen databases mening, og det ærlige utgangspunktet er å lese utstedelseskonfigurasjonen din i stedet for å anta at en bestemt EasyRSA- eller OpenSSL-standard gjelder.

Reserver det effektive navnet før signering

Før et register som mapper en enhet til dens godkjente post og derfra til et nøyaktig policyfilnavn, slik at et navn tildeles én gang og forblir tildelt. Reservasjonen må være atomisk, noe som i praksis betyr en databaserestriksjon eller en lås rundt trinnet tildel-og-deretter-signer, ikke et regneark som to personer redigerer.

Gjør deretter kontrollen til en del av utstedelsen: nekt å signere når det forespurte navnet allerede finnes, og inkluder hver myndighet serveren stoler på i den kontrollen, fordi et navn reservert av den andre myndigheten er like opptatt. En avvist forespørsel med klar begrunnelse er billigere enn en sak om en enhet som stadig får en annens statiske adresse.

Fornyelse gjenbruker et navn med vilje

Utstedelse på nytt for en eksisterende enhet bør gi et nytt serienummer under samme policynavn, og det er lovlig gjenbruk og ikke en kollisjon. Det som må avgjøres på forhånd, er overlappingen: om gammelt og nytt sertifikat kan være gyldige samtidig, og hvordan den gamle påloggingsinformasjonen trekkes tilbake.

Ikke grip etter duplicate-cn for å løse dette. Det serveralternativet styrer samtidige tilkoblinger som presenterer samme navn; det låser ikke påmeldingen, og å aktivere det gjør ikke én delt statisk adresse trygg for to maskiner samtidig. Tilbakekalling identifiserer vanligvis et sertifikat ved utsteder og serienummer, så tilbaketrekking av den gamle påloggingsinformasjonen trenger ikke ugyldiggjøre erstatningen så lenge serveren mottar og håndhever riktige tilbakekallingsdata.

Bekreft mappingen med verktøyene på maskinen

Før du gir en enhet dens nye påloggingsinformasjon, les navnet ut av sertifikatet slik serveren vil gjøre, og sammenlign det deretter med policyfilen du forventer blir 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 kommandoen skriver ut subjektfelt separat, noe som gjør en villfaren organisasjonsenhet eller et dobbelt mellomrom synlig med en gang. Den andre bekrefter at det finnes en policyfil under nøyaktig det navnet, og den tredje viser om serveren er konfigurert til å tillate flere økter på ett navn. Kjør alle tre mot et nytt sertifikat før det forlater påmeldingstrinnet, mens en feil ennå koster en signatur i stedet for en hendelse. Ta vare på utdataene sammen med saken, slik at neste person kan se hvilket navn serveren faktisk fikk.

Avslutt med en ekte tilkobling og sammenlign den tildelte adressen og de pushede rutene med policyfilen i stedet for med det du mente å skrive. Hvis to enheter rapporterer samme statiske adresse, har registeret en kollisjon som ingen sertifikatinspeksjon noensinne vil avdekke.

Relaterte artikler