OpenVPN verify-x509-name: subject, name και name-prefix
Ο τύπος αντιστοίχισης καθορίζει ποιο όνομα πιστοποιητικού συγκρίνεται. Τα subject, name και name-prefix δεν είναι ισοδύναμες προσδοκίες, και η προεπιλογή είναι το subject.
Διαβάστε πρώτα τον τύπο της αντιστοίχισης και μετά το κείμενο: μια verify-x509-name οδηγία μπορεί να φαίνεται σωστή και παρόλα αυτά να δεχτεί πιστοποιητικό που δεν σκοπεύατε να εμπιστευτείτε. Δύο γραμμές με το ίδιο αναμενόμενο κείμενο αλλά διαφορετικούς τύπους είναι διαφορετικές απαιτήσεις. Διαβάστε πρώτα τον τύπο και μετά το κείμενο. Αντιμετωπίστε την οδηγία ως μία ακόμη συνθήκη της σύνδεσης, όχι ως ολόκληρο τον έλεγχο.
Τι πραγματικά βεβαιώνει η επιλογή
Η οδηγία ονομάζει μια ταυτότητα που πρέπει να φέρει το πιστοποιητικό του απομακρυσμένου άκρου. Όταν η σύγκριση αποτύχει, OpenVPN διακόπτει τη χειραψία και δεν σηκώνεται σήραγγα. Όλα τα άλλα στο προφίλ εξακολουθούν να ισχύουν: το πιστοποιητικό πρέπει να αλυσιδώνεται σε αξιόπιστη CA και ο έλεγχος ρόλου πρέπει να περάσει, άρα αυτό είναι πρόσθετη συνθήκη και όχι υποκατάστατο. Ένα προφίλ που ικανοποιεί την προσδοκία ονόματος και αποτυγχάνει στον έλεγχο ρόλου παραμένει χαλασμένο, και το αρχείο καταγραφής συνήθως το λέει.
Διαφέρει επίσης από την επικύρωση ονόματος κεντρικού υπολογιστή που κάνει ένας περιηγητής. Ο περιηγητής αντιστοιχίζει ονόματα με εναλλακτικά ονόματα του subject σύμφωνα με τους κανόνες της στοίβας TLS του, ενώ το OpenVPN συγκρίνει ένα πεδίο του πιστοποιητικού με τον τύπο που επιλέξατε. Γι' αυτό η επικόλληση ονόματος κεντρικού υπολογιστή σε στυλ περιηγητή στην οδηγία μπορεί να δώσει αναντιστοιχία ακόμη και όταν το πιστοποιητικό καλύπτει πραγματικά την υπηρεσία.
subject: το πλήρες διακριτό όνομα, χαρακτήρα προς χαρακτήρα
Με subject, την προεπιλογή όταν δεν γράφεται τύπος, η αναμενόμενη τιμή πρέπει να αναπαράγει ολόκληρο το subject DN του πιστοποιητικού. Η σειρά πεδίων, τα διαχωριστικά, τα κενά και το escaping μετρούν όλα, γιατί η σύγκριση τρέχει στη συμβολοσειρά όπως είναι κωδικοποιημένη. Αν παραλείψετε τον τύπο, έχετε διαλέξει την αυστηρότερη από τις τρεις συγκρίσεις. Δεν υπάρχει βήμα κανονικοποίησης που να σώζει μια καλλωπιστική διαφορά. Αξίζει να το ξέρετε πριν την πρώτη ανανέωση, όχι μετά.
Αυτή η αυστηρότητα είναι εύθραυστη ανάμεσα στις ανανεώσεις. Μια CA που αναδιατάσσει χαρακτηριστικά, εισάγει επιπλέον πεδίο ή αλλάζει τον τρόπο escaping μιας τιμής παράγει νέα συμβολοσειρά για το ίδιο μηχάνημα, και μια οδηγία που δούλευε για χρόνια αρχίζει να αποτυγχάνει στην επόμενη έκδοση. Το να κρατάτε το αποδεκτό DN στο αρχείο αλλαγών κάνει την επόμενη ανανέωση μια διαφορά. Όπου ο διαχειριστής δημοσιεύει πλήρες DN και εγγυάται τη μορφή του, το subject είναι λογική επιλογή· αλλού ένα στενότερο πεδίο είναι ευκολότερο να κρατηθεί αληθινό.
name: ένα πεδίο, συνήθως το κοινό όνομα
Ο τύπος name συγκρίνει ένα μόνο πεδίο του subject. Εκτός αν το προφίλ λέει άλλιως, αυτό το πεδίο είναι το κοινό όνομα, και η αναμενόμενη τιμή είναι ακριβώς αυτό το πεδίο, όχι το DN γύρω του.
Η παγίδα είναι ότι τα σύγχρονα πιστοποιητικά δεν βάζουν πάντα το όνομα της υπηρεσίας στο CN. Πολλά το φέρουν σε εναλλακτικό όνομα του subject και αφήνουν το CN κενό ή γενικό, οπότε ένα πιστοποιητικό που δέχεται ο περιηγητής μπορεί να αποτύχει σε αυτή τη σύγκριση. Εξετάστε το πιστοποιητικό που σας εκδόθηκε πραγματικά πριν γράψετε την προσδοκία και επιβεβαιώστε ποιο πεδίο επιλέγει το προφίλ. Ένα κενό CN σε σύγκριση με ένα όνομα είναι αναντιστοιχία, όχι ατύχημα ρύθμισης.
name-prefix: ευρύ εκ σχεδιασμού, άρα περιφράξτε το
Μια προσδοκία τύπου name-prefix ταιριάζει με την αρχή του επιλεγμένου πεδίου. Αυτό είναι βολικό για ένα σχήμα ονοματοδοσίας και επικίνδυνο για οτιδήποτε μοιράζεται.
Με vpn.example ως προσδοκία, θα περνούσαν τόσο το vpn.example.com όσο και το vpn.example.net εφόσον η υπόλοιπη αλυσίδα είναι αξιόπιστη. Το εύρος είναι το χαρακτηριστικό, και είναι επίσης το σημείο που πρέπει να δικαιολογηθεί γραπτώς. Ένα πρόθεμα είναι λογικό όταν η CA και το σχήμα ονοματοδοσίας είναι δικά σας, και πολύ ασθενέστερο όταν μια δημόσια CA εκδίδει στο ίδιο μοτίβο. Αν το σχήμα χρειάζεται ευελιξία, περιορίστε το στην CA αντί να διευρύνετε τον έλεγχο του πελάτη.
Διαλέξτε τον τύπο από το αναγνωριστικό και μετά αποδείξτε το
Δουλέψτε αντίστροφα από την ταυτότητα που σκοπεύει ο διαχειριστής. Αν δημοσιεύει πλήρες DN και το κρατά σταθερό, subject το εκφράζει. Αν ονομάζει την υπηρεσία με το κοινό όνομα, χρησιμοποιήστε name. Αν κατέχει σχήμα ονοματοδοσίας και δέχεται όλο τον χώρο του, name-prefix το λέει ρητά.
Οι ανανεώσεις είναι εκεί όπου δοκιμάζεται η οδηγία. Συγκρίνετε την εγκεκριμένη ταυτότητα με το νέο πιστοποιητικό και όχι με το παλιό αρχείο, γιατί μια νέα διεύθυνση τελικού σημείου δεν σημαίνει νέα ταυτότητα πιστοποιητικού. Μη διαγράψετε την οδηγία μόνο επειδή μια γνώριμη διεύθυνση απαντά: η προσβασιμότητα και το επιδιωκόμενο άκρο είναι διαφορετικά γεγονότα, και η διεύθυνση αποδεικνύει μόνο ότι κάτι απάντησε. Καταγράψτε το ακριβές σφάλμα και τα δημόσια στοιχεία του ονόματος σε καθαρισμένη αναφορά, γιατί μια αναντιστοιχία ονόματος μπορεί να δειχθεί χωρίς κανένα υλικό ιδιωτικού κλειδιού.
Ύστερα από υποστηριζόμενη διόρθωση, συνδεθείτε ξανά με όλους τους επιδιωκόμενους ελέγχους ενεργούς και επαληθεύστε τον πόρο που πραγματικά χρειάζεστε. Επιτυχία σημαίνει ότι ο επιδιωκόμενος διακομιστής έγινε δεκτός, όχι ότι κάποιο πιστοποιητικό πέρασε με κόλπο. Το επίσημο εγχειρίδιο OpenVPN 2.6 manual τεκμηριώνει τους τρεις τύπους και τις σημειώσεις εμπιστοσύνης τους, και είναι η αναφορά που παραθέτει κανείς όταν μια διεπαφή προμηθευτή διαφωνεί με το προφίλ.