Certifikati korisnika na više domenskih računala
Nedavno, radeći na jednom projektu sam se susreo s problemom: kako jednom domenskom korisniku omogućiti korištenje certifikata na više računala. Odnosno, situacija je ovakva: domenski korisnik Pero se logira na računalo A, dohvati odgovarajući autentikacijski certifikat i pohrani ga u svoj Personal Certificate Store. Pero se logira na računalo B i što je s certifikatom?
Odgovor na to pitanje je u stvari drugo pitanje: kako je certifikat izdan?
- ako se radi o certifikatu izdanom od strane Enterprise Certification Authority-a, a ovisno o konfiguraciji samog predloška certifikata, isti će vjerojatno biti pridodan kao property user objekta AD-a i biti će dostupan korisniku
No, što ako je certifikat izdan od strane 3rd party CA, poput recimo certifikata za autentikaciju na nekim WEB servisima ili certifikata izdanog za digitalni potpis?
Opet imamo dvije opcije: certifikat može biti pohranjen na nekom vanjskom štićenom mediju, poput recimo smart-kartice ili USB tokena – tad nema problema, medij se priključi na računalo, odradi se predautentikacija (najčešće PIN ili otisak prsta) i eto pristupa certifikatu. No, takvi uređaji su često puta skupi, pa se onda i ne koriste u širokoj primjeni.
OK, dakle, ostaje pitanje što je sa soft certifikatima, koji uključuju korisnički privatni ključ. Opcija odlaksa u Active Directory Users and Computers konzolu, te importiranja certifikata u “Published Certificates” tabu neće proći… PFX datoteku tamo nije moguće importirat. Jes, možete importirati cert, ali bez privatnog ključa i onda ništa od toga, odnosno autentikacija na servisu Vam neće raditi.
Naravno, moje iduće razmišljanje je bilo, pa kreirat ću roaming profil, u sklopu kojeg će biti uključen i dotični certifikat iz odgovarajućeg store-a, no ne bi vjeroavli to ne radi
Barem meni nije proradilo. Znam da smo imali problema s time i ranije, prilikom recimo imiđiranja računala. Izgleda da je Cert store štićen, između ostalog i SID-om računala na neki način i eto problema. Istina, nisam baš previše istraživao kako su certovi u stvari štićeni, pa ako netko ima želju podjeliti – be my guest.
No, na svu sreću, našao sam rješenje. Gdje? Naravno, u GP-u
User Configuration\Policies\Windows Settings\Security Settings\Public Key Policies\Certificate Services Client – Credential Roaming
Priča kaže ovako. Proširivanjem AD sheme (W2K3, W2K8 ovo ima standardno) se dodaju nova atributa koja su potrebna za pohranu podataka o vjerodajnicama (ovo je u stvari credentials riječ… OK, obečajem, neću više)
, a to su:
- ms-PKI-DPAPIMasterKeys – sadrži master ključeve za enkripciju
- ms-PKI-AccountCredentials – objekte poput certifikata, privatnih ključeva, zahtjeva za certifikatima
- ms-PKI-RoamingTimeStamp – timestamp zadnje promjene
Važno je napomenuti kako je za sigurno korištenje potrebno AD okruženje u kome su DC poslužitelji bazirani minimalno na W2K3 SP1 sustavu. Tome je tako, pošto je u toj verziji OS-a implementirana mogućnost dodatne zaštite određenih atributa od mogućnosti čitanja/prikazivanja ostalim korisnicima.
Credential roaming je omogućen na računalima od Windows XP SP2/Windows Server 2003 SP1 na više, s time da je na XP-u i W2K3 OS-ovima potrebno implementirati update, koji je dostupan s MS Support stranica KB907247
Ajmo vidjeti sad koje postavke postoje u sklopu GP-a vezanog za Credential Roaming:
- Maximum tombstone credentials life in days – nakon što određenom certifikatu istekne valjanost, nakon koliko dana će on biti uklonjen iz AD-a. Valja voditi računa o vrijednost koja će se ovdje specificirati. Naime, ako uzmemo za primjer situaciju korisnika koji se je u prošlosti logirao na dva računala, te se na oba zbog Credential Roaminga nalaze njegovi certifikati. No, u poslijednjih 90 dana se je korisnik logirao samo na jedno od tih računala, a certifikat je istekao prije 60 dana. Na tom računalu će certifikat biti izbrisan, kao i u samom AD-u. No, ako se korisnik logira na drugo računalo (nakon 90 dana) na njemu će postojati istekli certifikat i dalje. Kad korisnik na tom računalu napravi logoff, cert će se ponovno kopirati u AD, a time i na ostala računala na koja se korisnik logira nakon toga!
- Maximum number of roaming credentials per user – koliko se za svakog korisnika može pohraniti certifikata
- Maximum size (in bytes) of a roaming credentials – kolika je maksimalna veličina jednog pohranjenog credentiala. Također, valja voditi računa o ukupnoj veličini user objekta. Naime, ako je dopušteno (standardno) 2000 credentiala, od kojih je svaki 65 KB dolazimo do računice kako user objekt može narasti do 130 MB!!
- Roam stored usernames and passwords – samo ime kaže. Valja napomenuti kako navedena postavka vrijedi samo i isključivo za verzije Windowsa od Viste na više
Valja napomenuti slučaj da se probije bilo koja maksimalna veličina ili količine credentiala, sam sustav roaminga vjerojatno neće raditi, tako da o tome valja voditi računa prilikom definiranja postavki!
Pojednostavljeno, stvari funkcioniraju na slijedeći način:
- Domenski korisnik se logira na domensko računalo. Radi se komparacija Local store-a i podataka u AD-u. Bilo kakva razlika se ili povlači na klijentsko računalo u Local store korisnika ili se šalje u AD.
- Proces roaminga će se također dešavati u slijedećim situacijama: reboot računala, lockanje računala, local user switch, te svakih 8 sati
E sad, o čemu valja voditi računa prilikom implementacije:
- nemojte koristiti i roaming user profile i credentials roaming – moguće je da će se desiti nepredviđeni problemi u sinkronizaciji podataka
- nemojte koristiti mandatory user profile i credentials roaming – iako ne postoji neki službeni razlog zašto, ipak vam ne preporučujem mješanje ovih dviju tehnologija
- ako koristite proces auto-enrollmenta user certifikata od strane Ent CA-a, vodite računa da se taj GP izvršava nakon GP-a za Credential Roaming. Razlog je jednostavan. Ako se je korisnik logirao na računalu A, te se je tamo desio auto-enrollment, certifikat će biti uključen u Roamingu. No, kad se korisnik logira na računalo B, a auto-enrollment se desi prije roaminga, korisniku će biti izdan dupli certifikat bez razloga
I evo, za kraj, primjer izgleda user objekta, odnosno propertija kojem je omogućen Credential Roaming:
certificate services, certifikati, korisnički profil, roaming credentials, smart cards



I’m going to bookmark this post…
Pozz Igore, samo da znaš da imaš visitora… Blog je odličan, teme su fantastične. Keep on doing that!
Thnx… Samo da ima jos malo vise vremena za postanje :S
Odlicna tema…
Bravo Igore, i probaj malo vremena nać za još koji tip&trick