Kaksi asiakasvarmennetta, joilla on eri sarjanumerot, eri avaimet ja jopa eri täydelliset subjektit, voivat silti päätyä samaan käytäntötiedostoon, koska palvelin ei katso mitään niistä. Se lukee nimen varmenteesta ja avaa sitä vastaavan asiakasasetustiedoston. Jos molemmat varmenteet kantavat samaa nimeä, toinen perii ensimmäisen käytännön heti yhdistyessään.

Törmäys syntyy rekisteröinnissä ja paljastuu vasta yhdistettäessä, yleensä kun laite saa osoitteen tai reittijoukon, joka kuuluu toiselle koneelle. Sen estäminen tarkoittaa sopimista siitä, minkä kentän palvelin kartoittaa, ja sitten kyseisen arvon varaamista ennen kuin mitään allekirjoitetaan.

Varmennetyökalusi eivät varoita sinua, koska ainutkertaisuus X.509:n sisällä ja OpenVPN-käytännön nimen ainutkertaisuus ovat eri vaatimuksia, joita eri järjestelmät valvovat.

Palvelin etsii nimeä, ei sormenjälkeä

Tavanomaisessa varmenneperusteisessa kartoituksessa palvelin ottaa yhteisen nimen esitetystä varmenteesta ja etsii sen nimistä tiedostoa asiakasasetushakemistostaan. Tämä tiedosto voi kiinnittää staattisen osoitteen, työntää reittejä tai käyttää asiakaskohtaisia palomuurimerkintöjä. Haku on merkkijonovastaavuus tiedostonimeä vasten, joten kirjainkoko, välilyönnit ja välimerkit merkitsevät kaikki.

Jotkut käyttöönotot vaihtavat kartoituksen tarkoituksella niin, että todennettu käyttäjänimi ottaa yhteisen nimen paikan, ja silloin käyttäjänimi on se, jonka on oltava ainutkertainen. Kummassakin tapauksessa käytännön valitseva arvo on arvo, jonka varaat. Päätä, kumpi se on, ennen kuin myönnät mitään; törmäyksen jälkeen arvaaminen maksaa enemmän kuin kysyminen.

Missä kaksi viranomaista osuu samaan nimeen

Organisaatio, joka hyväksyy varmenteita useammalta kuin yhdeltä myöntävältä viranomaiselta, pyörittää kahta riippumatonta rekisteröintiprosessia, jotka kirjoittavat yhteen nimiavaruuteen. Kunkin viranomaisen omat ainutkertaisuussäännöt pätevät sen sisällä, joten molemmat voivat laillisesti myöntää samalle yhteiselle nimelle ilman, että kumpikaan huomaa mitään väärää.

Sarjanumerot eivät auta. X.509 vaatii, että sarjanumero on ainutkertainen myöntäjänsä laajuudessa, mikä on kyseisen viranomaisen kirjanpidon ominaisuus eikä laitteen maailmanlaajuinen identiteetti. Subjektin tarkistus on myös eri testi kuin yhteisen nimen tarkistus: kaksi varmennetta voivat jakaa CN:n mutta erota organisaatioyksikössä ja siten kantaa eri subjekteja. Jokainen näistä ominaisuuksista voi päteä, kun palvelin silti kartoittaa molemmat varmenteet yhteen tiedostonimeen.

OpenSSL CA:n dokumentaatio kattaa asetuksen unique_subject, joka ohjaa sen oman tietokannan kantaa, ja rehellinen lähtökohta on lukea myöntävä asetuksesi sen sijaan, että olettaisit tietyn EasyRSA- tai OpenSSL-oletuksen pätevän.

Varaa tehollinen nimi ennen allekirjoitusta

Pidä rekisteriä, joka kartoittaa laitteen sen hyväksyttyyn tietueeseen ja siitä tarkkaan käytäntötiedoston nimeen, niin että nimi varataan kerran ja pysyy varattuna. Varauksen on oltava atominen, mikä käytännössä tarkoittaa tietokantarajoitetta tai lukkoa varaa-ja-allekirjoita-vaiheen ympärillä, ei kahden ihmisen muokkaamaa taulukkolaskentaa.

Tee sitten tarkistuksesta osa myöntämistä: kieltäydy allekirjoittamasta, kun pyydetty nimi on jo olemassa, ja sisällytä tarkistukseen jokainen viranomainen, johon palvelin luottaa, koska toisen viranomaisen varaama nimi on yhtä lailla varattu. Selkeällä syyllä hylätty pyyntö on halvempi kuin tiketti laitteesta, joka saa jatkuvasti jonkun toisen staattisen osoitteen.

Uusinta käyttää nimeä uudelleen tarkoituksella

Olemassa olevalle laitteelle uudelleenmyöntämisen pitäisi tuottaa uusi sarjanumero saman käytäntönimen alla, ja se on laillista uudelleenkäyttöä eikä törmäys. Etukäteen on päätettävä päällekkäisyys: voivatko vanha ja uusi varmenne olla voimassa samanaikaisesti, ja miten vanha kirjautumistieto poistetaan käytöstä.

Älä tartu duplicate-cn:een tämän ratkaisemiseksi. Tämä palvelinasetus ohjaa samanaikaisia yhteyksiä, jotka esittävät saman nimen; se ei lukitse rekisteröintiä, eikä sen käyttöönotto tee yhdestä jaetusta staattisesta osoitteesta turvallista kahdelle koneelle yhtä aikaa. Peruutus tunnistaa varmenteen yleensä myöntäjän ja sarjanumeron perusteella, joten vanhan kirjautumistiedon poistaminen käytöstä ei vaadi sen korvaajan mitätöimistä, kunhan palvelin saa ja panee täytäntöön oikeat peruutustiedot.

Vahvista kartoitus koneen työkaluilla

Ennen kuin annat laitteelle sen uuden kirjautumistiedon, lue nimi varmenteesta niin kuin palvelin tekisi ja vertaa sitä sitten käytäntötiedostoon, jonka odotat tulevan valituksi.

openssl x509 -in device42.crt -noout -subject -nameopt sep_multiline
ls -l /etc/openvpn/ccd/device42
grep -n "duplicate-cn" /etc/openvpn/server.conf

Ensimmäinen komento tulostaa subjektikentät erikseen, mikä tekee harhaan joutuneen organisaatioyksikön tai kaksinkertaisen välilyönnin heti näkyväksi. Toinen vahvistaa, että käytäntötiedosto on olemassa täsmälleen tällä nimellä, ja kolmas näyttää, onko palvelin määritetty sallimaan useita istuntoja yhdellä nimellä. Aja kaikki kolme tuoreelle varmenteelle ennen kuin se lähtee rekisteröintivaiheesta, kun virhe vielä maksaa allekirjoituksen eikä välikohtausta. Säilytä tuloste tiketin mukana, jotta seuraava henkilö näkee, minkä nimen palvelin todella sai.

Lopeta todelliseen yhteyteen ja vertaa annettua osoitetta ja työnnettyjä reittejä käytäntötiedostoon, älä siihen, mitä aioit kirjoittaa. Jos kaksi laitetta raportoi saman staattisen osoitteen, rekisterissä on törmäys, jota mikään varmenteen tarkastus ei koskaan paljasta.

Aiheeseen liittyvät artikkelit