Δύο πιστοποιητικά πελάτη με διαφορετικούς σειριακούς αριθμούς, διαφορετικά κλειδιά και ακόμη και διαφορετικά πλήρη υποκείμενα μπορούν παρ' όλα αυτά να καταλήξουν σε ένα μόνο αρχείο πολιτικής, επειδή ο διακομιστής δεν κοιτάει κανένα από αυτά. Διαβάζει ένα όνομα από το πιστοποιητικό και ανοίγει το αντίστοιχο αρχείο ρυθμίσεων πελάτη. Αν και τα δύο πιστοποιητικά φέρουν το ίδιο όνομα, το δεύτερο κληρονομεί την πολιτική του πρώτου τη στιγμή που συνδέεται.

Η σύγκρουση δημιουργείται κατά την εγγραφή και αποκαλύπτεται μόνο κατά τη σύνδεση, συνήθως όταν μια συσκευή λαμβάνει διεύθυνση ή σύνολο διαδρομών που ανήκουν σε άλλη μηχανή. Η πρόληψη σημαίνει συμφωνία για το ποιο πεδίο αντιστοιχίζει ο διακομιστής και, στη συνέχεια, δέσμευση αυτής της τιμής πριν υπογραφεί οτιδήποτε.

Τα εργαλεία πιστοποιητικών σας δεν θα σας προειδοποιήσουν, επειδή η μοναδικότητα εντός του X.509 και η μοναδικότητα ενός ονόματος πολιτικής OpenVPN είναι διαφορετικές απαιτήσεις που επιβάλλονται από διαφορετικά συστήματα.

Ο διακομιστής αναζητά όνομα, όχι αποτύπωμα

Με τη συνήθη αντιστοίχιση βάσει πιστοποιητικών, ο διακομιστής παίρνει το κοινό όνομα από το πιστοποιητικό που παρουσιάζεται και αναζητά αρχείο με αυτό το όνομα στον κατάλογο ρυθμίσεων πελατών. Αυτό το αρχείο μπορεί να καρφιτσώσει στατική διεύθυνση, να ωθήσει διαδρομές ή να εφαρμόσει σημάνσεις τείχους προστασίας ανά πελάτη. Η αναζήτηση είναι αντιστοίχιση συμβολοσειράς με όνομα αρχείου, επομένως τα πεζά-κεφαλαία, τα κενά και η στίξη έχουν σημασία.

Ορισμένες εγκαταστάσεις αντιστρέφουν σκόπιμα την αντιστοίχιση ώστε ένα πιστοποιημένο όνομα χρήστη να αναλάβει το κοινό όνομα, και τότε το όνομα χρήστη είναι αυτό που πρέπει να είναι μοναδικό. Σε κάθε περίπτωση, η τιμή που επιλέγει την πολιτική είναι η τιμή που δεσμεύετε. Αποφασίστε ποια είναι πριν εκδώσετε οτιδήποτε· η εικασία μετά από σύγκρουση κοστίζει περισσότερο από την ερώτηση.

Όπου δύο αρχές ταιριάζουν στο ίδιο όνομα

Ένας οργανισμός που δέχεται πιστοποιητικά από περισσότερες από μία εκδότριες αρχές εκτελεί δύο ανεξάρτητες διαδικασίες εγγραφής που γράφουν σε έναν χώρο ονομάτων. Οι κανόνες μοναδικότητας κάθε αρχής ισχύουν στο εσωτερικό της, επομένως και οι δύο μπορούν νόμιμα να εκδώσουν για το ίδιο κοινό όνομα χωρίς καμία να αντιληφθεί κάτι λάθος.

Οι σειριακοί αριθμοί δεν βοηθούν. Το X.509 απαιτεί ο σειριακός αριθμός να είναι μοναδικός εντός του πεδίου του εκδότη του, κάτι που είναι ιδιότητα της λογιστικής εκείνης της αρχής και όχι παγκόσμια ταυτότητα συσκευής. Ο έλεγχος υποκειμένου είναι επίσης διαφορετική δοκιμή από τον έλεγχο κοινού ονόματος: δύο πιστοποιητικά μπορούν να μοιράζονται ένα CN ενώ διαφέρουν σε οργανωτική μονάδα και επομένως φέρουν διαφορετικά υποκείμενα. Καθεμία από αυτές τις ιδιότητες μπορεί να ισχύει ενώ ο διακομιστής εξακολουθεί να αντιστοιχίζει και τα δύο πιστοποιητικά σε ένα όνομα αρχείου.

Η τεκμηρίωση του OpenSSL CA καλύπτει τη ρύθμιση unique_subject που διέπει τη γνώμη της δικής της βάσης δεδομένων, και το έντιμο σημείο εκκίνησης είναι να διαβάσετε τη ρύθμιση έκδοσής σας αντί να υποθέσετε ότι ισχύει κάποια προεπιλογή του EasyRSA ή του OpenSSL.

Δεσμεύστε το πραγματικό όνομα πριν από την υπογραφή

Τηρείτε μητρώο που αντιστοιχίζει μια συσκευή στην εγκεκριμένη εγγραφή της και από εκεί σε ένα ακριβές όνομα αρχείου πολιτικής, ώστε ένα όνομα να εκχωρείται μία φορά και να παραμένει εκχωρημένο. Η δέσμευση πρέπει να είναι ατομική, που στην πράξη σημαίνει περιορισμό βάσης δεδομένων ή κλείδωμα γύρω από το βήμα εκχώρηση-και-υπογραφή, όχι υπολογιστικό φύλλο που επεξεργάζονται δύο άτομα.

Έπειτα κάντε τον έλεγχο μέρος της έκδοσης: αρνηθείτε να υπογράψετε όταν το ζητούμενο όνομα υπάρχει ήδη, και συμπεριλάβετε σε αυτόν τον έλεγχο κάθε αρχή που εμπιστεύεται ο διακομιστής, γιατί ένα όνομα που έχει δεσμεύσει η άλλη αρχή είναι εξίσου κατειλημμένο. Ένα απορριφθέν αίτημα με σαφή λόγο είναι φθηνότερο από ένα δελτίο για μια συσκευή που παίρνει συνεχώς τη στατική διεύθυνση κάποιου άλλου.

Η ανανέωση επαναχρησιμοποιεί σκόπιμα ένα όνομα

Η επανέκδοση για μια υπάρχουσα συσκευή πρέπει να παράγει νέο σειριακό αριθμό κάτω από το ίδιο όνομα πολιτικής, και αυτό είναι νόμιμη επαναχρησιμοποίηση και όχι σύγκρουση. Αυτό που πρέπει να αποφασιστεί εκ των προτέρων είναι η επικάλυψη: αν το παλιό και το νέο πιστοποιητικό μπορούν να ισχύουν ταυτόχρονα, και πώς αποσύρεται το παλιό διαπιστευτήριο.

Μην καταφύγετε στο duplicate-cn για να το λύσετε. Αυτή η επιλογή διακομιστή διέπει ταυτόχρονες συνδέσεις που παρουσιάζουν το ίδιο όνομα· δεν κλειδώνει την εγγραφή, και η ενεργοποίησή της δεν κάνει μία κοινόχρηστη στατική διεύθυνση ασφαλή για δύο μηχανές ταυτόχρονα. Η ανάκληση συνήθως ταυτοποιεί ένα πιστοποιητικό με εκδότη και σειριακό αριθμό, επομένως η απόσυρση του παλιού διαπιστευτηρίου δεν χρειάζεται να ακυρώσει την αντικατάστασή του, αρκεί ο διακομιστής να λαμβάνει και να επιβάλλει τα σωστά δεδομένα ανάκλησης.

Επιβεβαιώστε την αντιστοίχιση με τα εργαλεία στη μηχανή

Πριν παραδώσετε σε μια συσκευή το νέο της διαπιστευτήριο, διαβάστε το όνομα από το πιστοποιητικό με τον τρόπο που θα το κάνει ο διακομιστής και στη συνέχεια συγκρίνετε το με το αρχείο πολιτικής που περιμένετε να επιλεγεί.

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

Η πρώτη εντολή εκτυπώνει τα πεδία υποκειμένου ξεχωριστά, κάτι που κάνει αμέσως ορατή μια περιπλανώμενη οργανωτική μονάδα ή ένα διπλό κενό. Η δεύτερη επιβεβαιώνει ότι υπάρχει αρχείο πολιτικής ακριβώς με αυτό το όνομα, και η τρίτη δείχνει αν ο διακομιστής έχει ρυθμιστεί να επιτρέπει πολλές συνεδρίες σε ένα όνομα. Εκτελέστε και τις τρεις σε ένα νέο πιστοποιητικό πριν αυτό φύγει από το βήμα εγγραφής, όσο ένα λάθος κοστίζει ακόμη μια υπογραφή αντί για ένα περιστατικό. Κρατήστε την έξοδο μαζί με το δελτίο, ώστε το επόμενο άτομο να δει ποιο όνομα δόθηκε πράγματι στον διακομιστή.

Ολοκληρώστε με πραγματική σύνδεση και συγκρίνετε τη διευθυνόμενη διεύθυνση και τις διαδρομές που ωθήθηκαν με το αρχείο πολιτικής και όχι με αυτό που σκοπεύατε να γράψετε. Αν δύο συσκευές αναφέρουν την ίδια στατική διεύθυνση, το μητρώο έχει σύγκρουση που καμία επιθεώρηση πιστοποιητικών δεν θα αποκαλύψει ποτέ.

Σχετικά άρθρα