Lisäät client-connect-skriptin, joka hylkää jokaisen yhteyden, jossa common_name eroaa username-arvosta, ja se näyttää varmenteen ja tilin väliseltä sidokselta. Palvelimella, jolla username-as-common-name on käytössä, tuo vertailu on jo menettänyt merkityksensä skriptin suoritushetkellä. Molemmat arvot ovat sama merkkijono, joten testi menee läpi varmenteelle, joka on myönnetty aivan toiselle henkilölle.

Tarkistus ei ole väärin siksi, että skripti on huonosti kirjoitettu. Se on väärin siksi, että arvo, jonka se lukee, korvattiin aiemmin samassa yhteydessä.

Mitä vertailu näyttää todistavan

Varmenneautentikointi ja salasana-autentikointi ovat erillisiä todisteita, ja palvelin voi vaatia molemmat vaatimatta, että ne kuuluvat samalle henkilölle. Ero on todellinen: kelvollinen laitevarmenne plus mikä tahansa kelvollinen tili on eri väite kuin sama laitevarmenne plus yksi nimetty tili. Skripti, joka vertaa common_name username-arvoon, kuulostaa niiden väliltä puuttuvalta lenkiltä. Ja sellainen se olisi, jos common_name tarkoittaisi yhä sitä, mitä varmenne sanoi.

Se, onko näin, riippuu yhdestä palvelinasetuksesta, ja se asetus kytketään yleensä päälle asiasta riippumattomasta syystä, kuten siitä, että käyttäjäkohtaisten asetustiedostojen nimeäminen helpottuisi.

Mitä username-as-common-name tekee nimelle

Kun username-as-common-name on käytössä, OpenVPN korvaa varmenteen yleisnimen autentikoidulla käyttäjänimellä, kun käyttäjänimi ja salasana on vahvistettu. Tarkistuksen aikana ajettava vahvistuskoukku saa yhä varmenteen yleisnimen, koska korvausta ei ole vielä tehty. Kaikki sen jälkeen, mukaan lukien client-connect, näkee käyttäjänimen. Myöhempi takaisinkutsu saa siis yhden identiteetin kahdesti eikä voi verrata sitä esitettyyn varmenteeseen.

StageWhat common_name holds
Username and password verification hookThe certificate common name, for example bob-device
After the replacementThe authenticated account, alice
client-connect callbackThe account again, alice

Seuraa yhtä havainnollista yhteyttä: varmenne, joka on myönnetty laitteelle bob-device, onnistunut hakemistokirjautuminen nimellä alice ja asetus käytössä. Vahvistusvaihe voi yhä nähdä kaksi eri merkkijonoa. Yhteysvaihe näkee alice ja alice.

Tämä esimerkki näyttää, miksi vertailu on tyhjä. Se ei näytä, että yhteys muuten hyväksyttäisiin, koska varmenteen vahvistus ja salasanan tarkistus toimivat yhä itsestään.

Sijoita sidos sinne, missä molemmat identiteetit ovat vielä olemassa

Sääntö on pantava täytäntöön vaiheessa, joka näkee varmenteen identiteetin ja tilin samanaikaisesti, mikä tarkoittaa käytännössä käyttäjänimen ja salasanan vahvistuskoukkua tai sinne ladattua liitännäistä. Tuetu liitännäinen, joka jo tekee salasanan vahvistuksen, on yleensä oikea paikka parisäännön lisäämiseen, koska sen korvaaminen nimivertailulla pudottaisi salasanan tarkistuksen kokonaan pois.

Määritä mappaus ennen koodin kirjoittamista, koska yhdenvertaisuus on harvoin todellinen käytäntö. Varmenne tunnistaa usein laitteen, kun taas kirjautuminen tunnistaa henkilön, ja yksi laite voi laillisesti palvella useita henkilöitä. Tallenna suhde muotoon, jonka myöntämistä hallitset, ja päätä, mitä tapahtuu uudelleennimeämisessä, uudelleenmyöntämisessä ja verkkotunnuksella täsmennetyissä nimissä. Verkkotunnuksen etuliitteen pienentäminen tai poistaminen ymmärtämättä hakemistoa voi yhdistää kaksi tiliä, joiden piti pysyä erillään.

Muista, että asetus muuttaa myös sitä, mikä asiakaskohtainen kokoonpano on voimassa, koska client-config-dir avainnetaan yleisnimellä.

Testaa paritus kahdella kelvollisella tunnuksella

Aloita parilla, jonka käytäntösi sallii, ja vahvista, että se yhdistää. Esitä sitten sama kelvollinen varmenne toisen, mutta muuten kelvollisen tilin kanssa: sen yrityksen on epäonnistuttava, ja sen on epäonnistuttava parisäännön vuoksi, ei väärin kirjoitetun salasanan vuoksi. Väärä salasana todistaa, että salasanan tarkistus toimii, eikä kerro mitään varmenteen ja tilin välisestä säännöstä.

Tarkista myös puuttuvan ja kelvottoman varmenteen polut ja vahvista, mitä identiteettiä palvelin käyttää asiakaskohtaisiin asetuksiin. Jos ainoa tapa saada vertailu toimimaan on poistaa username-as-common-name käytöstä, laske ensin muutoksen hinta, koska se siirtää jokaisen asiakkaan kokoonpanohaun takaisin varmenteen nimeen.

Aiheeseen liittyvät artikkelit