Jump to content
  • entries
    6
  • comments
    8
  • views
    2964

3rd-party PKI and smart-card logon blues... mission accomplished!


dimitris

545 views

 Share

Επιτέλους το blog αυτό αναβιώνει! Δεν περιμένα ποτέ ότι θα σταματούσα τόσον καιρό τις δημοσιεύσεις του, αλλά τελικά σταμάτησα κάθε δημοσίευση γενικά :P
Όπως και να έχει, θα αναφέρουμε ένα ενδιαφέρον πρόβλημα που αντιμετώπισα πρόσφατα, σε ένα σχετικά μεγάλο οργανισμό ο οποίος επιθυμούσε να ενεργοποιήσει το smart-card logon στα PC του.

Ας δούμε λίγο το background της υλοποίησης. Ο οργανισμός αυτός διαθέτει ένα αυστηρά στημένο και φυσικά προστατευμένο 3rd-party PKI infrastructure με offline root CA & subordinate issuing CAs. Όταν λέω 3rd party, εννοώ non-Microsoft - και συγκεκριμένα όχι κάποιο προϊόν γνωστού (συνήθως εξ ΗΠΑ) vendor για τον οποίο θα μπορούσαμε σχετικά εύκολα να βρούμε πληροφορίες, αλλά μιας ευρωπαϊκής εταρείας την οποία προσωπικά δεν την είχα ακούσει αλλά και το site της δεν διέθετε καμιά απολύτως τεχνική πληροφορία. Ο οργανισμός επιθυμούσε λοιπόν να εκδώσει τα κατάλληλα ψηφιακά πιστοποιητικά προκειμένου να ενεργοποιήσει το smart card logon. Ο πιο εύκολος και "ανώδυνος" τρόπος θα ήταν μέσω της δημιουργίας ενός Windows 2008R2 subordinate issuing CA το οποίο με τα κατάλληλα templates θα εξέδιδε τα κατάλληλα ψηφιακά πιστοποιητικά και αυτό προτάθηκε εξ αρχής, αλλά και κατά τη διάρκεια του troubleshooting, προκειμένου να επιτύχουμε το στόχο μας γρήγορα. Ο πελάτης, ωστόσο, είχε επενδύσει ήδη στην υπάρχουσα υποδομή και επιθυμούσε να τη χρησιμοποιήσει εξ ολοκλήρου προκειμένου να δουλέψει το smart-card logon. Έτσι και έγινε.

Αρχικά είχε ήδη στηθεί ένα lab με ένα Windows 7 PC με smart-card reader και το σχετικό middleware (3rd-party κι αυτό) για την επικοινωνία του reader με το λειτουργικό. Το αρχικό πρόβλημα ήταν ότι κατά τις δοκιμές, το PC κολλούσε κατά τη διάρκεια του smart card logon. Έπρεπε να βρούμε τι έφταιγε και τελικά να δοκιμάσουμε με επιτυχία ένα τέτοιο logon τόσο σε Windows XP όσο και σε Windows 7, τα λειτουργικά δηλαδή που χρησιμοποιούνται στον οργανισμό. To troubleshooting επρόκειτο να είναι χρονοβόρο και δύσκολο. Στην πορεία προέκυπταν διάφορα configuration προβλήματα τα οποία και θα δούμε ευθύς αμέσως.

- Κατ'αρχή, δεν υπήρχαν τα certificates του Issuing CA (subordinate) στο virtual machine certificate store στο PC. Αυτό σημαίνει ότι ο client δεν εμπιστεύεται το Issuing CA εξ αρχής. Αυτό θα γινόταν αυτόματα μέσω πολιτικής αν το CA ήταν MS, αλλά τώρα έπρεπε να εισαχθεί το certificate αυτό στο Group Policy προκειμένου να σταλεί αυτόματα σε όλα τα domain clients. Στη συγκεκριμένη περίπτωση, το βάλαμε "με το χέρι" προκειμένου να έχουμε άμεση λύση και να προχωρήσουμε παρακάτω.

- Κατά δεύτερο, δεν ήταν σωστά φτιαγμένο το DC certificate - φτιάξαμε ένα καινούργιο template και το εκδώσαμε ξανά (σύμφωνα με τις οδηγίες στο KB291010 και στο http://technet.microsoft.com/en-us/library/cc775547(WS.10).aspx). Τα attributes "Key encipherment" στο "Key Usage" section και "Client authentication" στο "Enhanced Key Usage" section δεν υπήρχαν μέσα στο εκδιδόμενο certificate και αυτό ήταν προϋπόθεση για να δουλέψει σωστά το smart card logon.

- Κατά τρίτο, δεν υπήρχε καθόλου CRL publishing από το (στημένο ξανά) Issuing CA, οπότε το φτιάξαμε.

- Εν συνεχεία, επειδή έπρεπε να χρησιμοποιηθούν Domain Controller certificates (ελέω smart card authentication) και το ΡΚΙ ήταν 3rd party, έπρεπε να κάνουμε import (ουσιαστικά να ελέγξουμε τον αριθμό & thumbprints) τα certificates στο NTAuth registry key του Active Directory.

Εν συνεχεία, ελέγξαμε αν είναι expired η CRL ή όχι και αν υπάρχουν σφάλματα σε event logs. Ο DNS client του PC δε μπορούσε να κάνει resolve το CRL FQDN. To στρώσαμε αυτό. Εν συνεχεία τρέξαμε την εντολή certutil -verify -urlfetch cert.cer (ένα exported smart-card certificate) να δούμε την "υγεία" του και διαπιστώσαμε ότι παρ' όλο που όλα φαίνονταν ΟΚ, είχαμε ένα περίεργο μήνυμα "bad cert issuer" στο output της εντολής. Δεν μπόρεσα να βρω πουθενά καμιά πληροφορία για το συγκεκριμένο error, ωστόσο ήταν προφανές από το αποτέλεσμα της εντολής ότι υπήρχε θέμα με την CRL. Μετά από ενδελεχές εσωτερικό brainstorming, σκέφτηκα να κοιτάξουμε πάλι την CRL - και έτσι διαπιστώνουμε ότι το CRL repository "έδειχνε" σε ένα παλιότερο Issuing CA CRL που είχαμε φτιάξει στην αρχή των δοκιμών.<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 Κατ' επέκταση, ο client έψαχνε και έβρισκε μια CRL η οποία όμως δεν ανταποκρίνονταν στην CRL που έπρεπε να διαβάσει!

Γενικά επρόκειτο για ένα πολύπλοκο πρόβλημα που περιλάμβανε misconfigurations σε συγκεκριμένα σημεία, τα οποία όμως αντιμετωπίστηκαν με υπομονή και επιμονή τόσο από εμένα όσο και από το ΙΤ του οργανισμού. Mission accomplished!

 Share

0 Comments


Recommended Comments

There are no comments to display.

Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...