Ένα κοινό όνομα, δύο πιστοποιητικά: λίστα επιτρεπόμενων ή ανάκληση;
Η επανέκδοση πιστοποιητικού για το ίδιο κοινό όνομα αφήνει το παλιό έγκυρο. Μια λίστα επιτρεπόμενων ονομάτων δεν μπορεί να τα ξεχωρίσει· μόνο μια CRL ή έλεγχος σειριακού αριθμού μπορεί.
Η επανέκδοση πιστοποιητικού φορητού υπολογιστή με το ίδιο κοινό όνομα μοιάζει με αντικατάσταση, και όλοι υποθέτουν ότι το παλιό είναι νεκρό. Δεν είναι. Ο προκάτοχος παραμένει έγκυρο πιστοποιητικό υπογεγραμμένο από την ίδια αρχή, και οποιοσδήποτε έλεγχος δέχεται πελάτες με βάση το όνομα θα συνεχίσει να το δέχεται. Αυτό που διαχωρίζει έναν έλεγχο ταυτότητας από έναν έλεγχο διαπιστευτηρίων είναι ο σειριακός αριθμός, και εκεί ανήκει η διόρθωση.
Ξεκινήστε από την πολιτική ονομάτων που χρησιμοποιεί ο διακομιστής
Δύο έλεγχοι συγχέονται: η αποδοχή ενός πελάτη επειδή ισχυρίζεται ποιος είναι, και η απόσυρση ενός συγκεκριμένου πιστοποιητικού από την υπηρεσία. Ο πρώτος είναι έλεγχος ονόματος, ο δεύτερος έλεγχος ανάκλησης. Απαντούν σε διαφορετικά ερωτήματα, και μια εγκατάσταση μπορεί να έχει τον έναν χωρίς τον άλλον.
Διαβάστε τη διαμόρφωση του διακομιστή και σημειώστε ποια πηγή ταυτότητας ισχύει. username-as-common-name κάνει το πιστοποιημένο όνομα χρήστη το πραγματικό όνομα για αναζητήσεις ειδικές ανά πελάτη. Χωρίς αυτό, χρησιμοποιείται το κοινό όνομα του υποκειμένου από το πιστοποιητικό. Όποια κι αν είναι η απάντηση, σημειώστε την πριν αγγίξετε οποιαδήποτε λίστα επιτρεπόμενων.
Οι δύο διαδρομές παράγουν διαφορετικό σύνολο επιτρεπόμενων ονομάτων για το ίδιο πιστοποιητικό. Το να μαντέψετε εδώ σημαίνει να επεξεργαστείτε το λάθος αρχείο και να συμπεράνετε ότι ο έλεγχος δεν λειτουργεί.
Ελέγξτε τι πραγματικά δέχεται έναν πελάτη
Ένα client-config-dir με αντίστοιχο αρχείο παρέχει επιλογές ανά πελάτη· από μόνο του δεν είναι κανόνας αποδοχής. Η αποδοχή με βάση το όνομα απαιτεί ccd-exclusive, που απορρίπτει πελάτες χωρίς αντίστοιχο αρχείο. Η ενεργοποίησή του σε ζωντανή εγκατάσταση αποσυνδέει όλους όσων το όνομα δεν έχει αρχείο, οπότε μετρήστε τα αρχεία πριν αλλάξετε οτιδήποτε.
grep -nE 'ccd-exclusive|client-config-dir|username-as-common-name' /etc/openvpn/server/server.conf
ls -1 /etc/openvpn/ccd/Το πλήθος είναι ο έλεγχος: συγκρίνετε την καταγραφή του καταλόγου με τις ταυτότητες που περιμένετε να συνδεθούν.
Στη συνέχεια επιβεβαιώστε ότι κάθε όνομα αρχείου ταιριάζει ακριβώς με την πραγματική ταυτότητα, συμπεριλαμβανομένων πεζών-κεφαλαίων και κενών. Ένα αρχείο για office-laptop δεν κάνει τίποτα για πιστοποιητικό του οποίου το υποκείμενο γράφει Office-Laptop. Τα κενά στο τέλος κρύβονται επίσης από μια απλή καταγραφή, και έτσι ένα αρχείο που φαίνεται παρόν μένει αδιάβαστο.
Ελέγξτε την CRL που φορτώνει η πύλη
Μια CRL ονομάζει τα ανακληθέντα πιστοποιητικά κατά εκδότη και σειριακό αριθμό, που είναι η λεπτομέρεια που λείπει από έναν έλεγχο ονόματος. Δύο πιστοποιητικά μπορούν να μοιράζονται κοινό όνομα και να διαφέρουν στον σειριακό αριθμό, και μόνο μια λίστα σε επίπεδο σειριακού αριθμού τα χωρίζει.
Επιβεβαιώστε τη διαμορφωμένη διαδρομή, την ημερομηνία έκδοσης και το πεδίο επόμενης ενημέρωσης πριν εμπιστευτείτε καθόλου το αρχείο.
openssl crl -in /etc/openvpn/crl.pem -noout -lastupdate -nextupdate
openssl x509 -in office-laptop.crt -noout -serial -subjectΣυγκρίνετε τον σειριακό αριθμό στην CRL με τον σειριακό αριθμό στο πιστοποιητικό που σκοπεύετε να κρατήσετε. Αυτή η σύγκριση είναι όλο το τεστ, και το να το κάνετε μία φορά με το μάτι αξίζει περισσότερο από το να εμπιστεύεστε ένα σενάριο που δεν διάβασε κανείς. Διανείμετε την ενημερωμένη CRL μέσω της διαδρομής που η πύλη διαβάζει ήδη. Μια CRL σε λάθος κατάλογο δεν επιβάλλει τίποτα, και κανένα αρχείο καταγραφής πελάτη δεν θα την αναφέρει.
Αντικαταστήστε, και μετά αποδείξτε και τα δύο αποτελέσματα
Εκδώστε την αντικατάσταση με το ίδιο κοινό όνομα, καταγράψτε και τους δύο σειριακούς αριθμούς, και μόνο τότε ανακαλέστε το παλιό. Αυτή η σειρά κρατά μια λειτουργική ταυτότητα διαθέσιμη όσο προετοιμάζετε την αλλαγή.
Δοκιμάστε πρώτα την αντικατάσταση: θα πρέπει να πιστοποιηθεί και να φτάσει σε ό,τι δικαιούται το όνομά της. Στη συνέχεια δοκιμάστε το παλιό πιστοποιητικό και επιβεβαιώστε ότι απορρίπτεται, γιατί μια επιτυχημένη αντικατάσταση δεν λέει τίποτα για την ανάκληση. Αν και τα δύο εξακολουθούν να συνδέονται, η είσοδος ανάκλησης δεν διαβάζεται ή ο παλιός σειριακός αριθμός δεν καταχωρήθηκε ποτέ. Αν δεν συνδέεται κανένα, έχετε σπάσει τον κανόνα αποδοχής, όχι το διαπιστευτήριο.
Οι ήδη εγκατεστημένες συνεδρίες είναι ξεχωριστό θέμα, καθώς η ανάκληση ισχύει για νέες πιστοποιήσεις εκτός αν η πύλη έχει διαμορφωθεί να απορρίπτει και ζωντανές συνδέσεις. Αποφασίστε αν απαιτείται άμεση αφαίρεση πριν το υποσχεθείτε σε κάποιον.
Τι δεν μπορεί ποτέ να κάνει ένας έλεγχος ονόματος
Μια λίστα επιτρεπόμενων απαντά αν αυτή η ταυτότητα επιτρέπεται να συνδεθεί. Δεν μπορεί να πει ποιο πιστοποιητικό χρησιμοποίησε αυτή η ταυτότητα, και θα δέχεται παλαιότερο διαπιστευτήριο για όσο το διαπιστευτήριο παραμένει έγκυρο και μη ανακληθέν. Αυτό το κενό εμφανίζεται κατά τη διάρκεια ενός περιστατικού, όταν η αντικατάσταση εκδόθηκε μήνες πριν και ο προκάτοχος ακόμη λειτουργεί.
Όπου απαιτείται έλεγχος σε επίπεδο πιστοποιητικού, χρησιμοποιήστε μηχανισμό που ονομάζει το πιστοποιητικό: καταχωρήσεις CRL, ή ένα hook επαλήθευσης που ελέγχει ένα αποτύπωμα που διατηρεί ο χειριστής. Και τα δύο κοστίζουν συντήρηση, και τα δύο είναι ειλικρινή για το αντικείμενο που εξετάζουν. Το εγχειρίδιο του OpenVPN 2.6 τεκμηριώνει crl-verify και την αποδοχή ειδικά ανά πελάτη ως ξεχωριστές επιλογές για αυτόν τον λόγο.
Σημειώστε ποιος έλεγχος κάνει ποια δουλειά, και μετά δοκιμάστε την αρνητική περίπτωση. Μια ανάκληση που δεν έχετε δει ποτέ να απορρίπτει σύνδεση είναι μια διαμόρφωση που ελπίζετε να λειτουργεί.