remote-cert-tls server: τι ελέγχει σε ένα προφίλ OpenVPN
Η οδηγία ελέγχει τον ρόλο που κωδικοποιείται στο πιστοποιητικό του ομολόγου, όχι το όνομά του. Συγκρίνετε ρόλο, άγκυρα εμπιστοσύνης και έλεγχο ονόματος κεντρικού υπολογιστή πριν απενεργοποιήσετε οτιδήποτε.
Τρεις διαφορετικές ερωτήσεις απαντώνται από τρία διαφορετικά μέρη ενός προφίλ OpenVPN, και η συγχώνευσή τους είναι ο τρόπος με τον οποίο οι άνθρωποι καταλήγουν να απενεργοποιούν έναν έλεγχο που λειτουργούσε. Είναι το πιστοποιητικό του ομολόγου υπογεγραμμένο από την αρχή που εμπιστεύομαι; Δηλώνει αυτό το πιστοποιητικό τον ρόλο διακομιστή TLS; Είναι ο συγκεκριμένος διακομιστής που ήθελα να προσεγγίσω; remote-cert-tls server απαντά μόνο στη μεσαία ερώτηση, και το κάνει διαβάζοντας τις επεκτάσεις μέσα στο πιστοποιητικό.
Τρεις έλεγχοι που συγχέονται εύκολα στο μυαλό
Η άγκυρα εμπιστοσύνης ζει στην οδηγία ca. Ο έλεγχος ρόλου ανήκει στο remote-cert-tls. Ο έλεγχος ταυτότητας ανήκει στο verify-x509-name, όταν ένα προφίλ το χρησιμοποιεί, ή σε όποιον έλεγχο ονόματος προσθέτει η ανάπτυξη.
Καλύπτουν διαφορετικές αστοχίες:
| Question | Directive | Failure it catches |
|---|---|---|
| Who signed this? | ca | Certificate from an unrelated authority |
| Is this a server? | remote-cert-tls | Client certificate presented by a peer |
| Is this my server? | verify-x509-name | Another valid server from the same CA |
Ένα προφίλ μπορεί να έχει και τα τρία και παρόλα αυτά να είναι αδύναμο αν η CA μοιράζεται πολύ ευρέως, που είναι ζήτημα διαχείρισης κλειδιών και όχι οδηγίας.
Τι διαβάζει ο έλεγχος ρόλου
Η οδηγία είναι μια μακροεντολή. Επεκτείνεται σε απαίτηση χρήσης κλειδιού και σε απαίτηση εκτεταμένης χρήσης κλειδιού που ονομάζει τον ρόλο διακομιστή ιστού TLS, οπότε το πιστοποιητικό του ομολόγου πρέπει πραγματικά να δηλώνει αυτόν τον σκοπό. Ένα πιστοποιητικό που εκδόθηκε για έλεγχο ταυτότητας πελάτη δεν το ικανοποιεί, ακόμη και όταν η ίδια αρχή υπέγραψε και τα δύο.
Αυτό έχει σημασία γιατί μια κοινόχρηστη CA είναι συνηθισμένη σε μικρές αναπτύξεις. Μία αρχή υπογράφει κάθε πελάτη και τον διακομιστή, και χωρίς έλεγχο ρόλου οποιοδήποτε από αυτά τα πιστοποιητικά θα μπορούσε να ολοκληρώσει την πλευρά διακομιστή της χειραψίας. Ο έλεγχος δεν κάνει αυτό το σενάριο αδύνατο, αλλά αφαιρεί την τετριμμένη εκδοχή του.
Η οδηγία είναι ασύμμετρη εκ σχεδιασμού: οι πελάτες φέρουν remote-cert-tls server, και οι διακομιστές φέρουν remote-cert-tls client. Ανταλλάξτε τα και κάθε σύνδεση αποτυγχάνει με σφάλμα ρόλου που μοιάζει με χαλασμένο πιστοποιητικό.
Τα παλαιότερα προφίλ χρησιμοποιούν μερικές φορές το ns-cert-type για τον ίδιο σκοπό. Οι τρέχουσες σελίδες εγχειριδίου θεωρούν αυτή την επιλογή ξεπερασμένη, οπότε ένα προφίλ που εξακολουθεί να βασίζεται σε αυτή αξίζει μετεγκατάσταση αντί για αποσφαλμάτωση.
Γιατί η απενεργοποίηση μοιάζει με διόρθωση
Όταν ο έλεγχος ρόλου αποτυγχάνει, η σύνδεση σταματά με σφάλμα επαλήθευσης και η προφανής κίνηση είναι να διαγραφεί η γραμμή. Η σύνδεση τότε ανεβαίνει, κάτι που μοιάζει με πρόοδο και είναι στην πραγματικότητα ο τρόπος αποτυχίας που υπάρχει η οδηγία για να αποτρέπει. Τώρα δέχεστε ένα ομόλογο του οποίου το πιστοποιητικό δεν προοριζόταν ποτέ για αυτόν τον ρόλο.
Διαβάστε το σφάλμα αντί γι' αυτό. Ονομάζει τον έλεγχο που απέτυχε, και το πιστοποιητικό στην άλλη πλευρά μπορεί να επιθεωρηθεί για να δείτε ποιες επεκτάσεις πραγματικά φέρει. Δύο λεπτά ανάγνωσης αποφασίζουν αν το σφάλμα είναι στην έκδοση ή στη διαμόρφωση. Η εικασία κοστίζει ένα απόγευμα και συνήθως καταλήγει σε αποδυναμωμένο προφίλ. Ένα ανανεωμένο πιστοποιητικό διακομιστή που έχασε την εκτεταμένη χρήση κλειδιού είναι πραγματικό σφάλμα στην ανανέωση, όχι λόγος να χαλαρώσετε τον πελάτη.
Ο έλεγχος ονόματος είναι ξεχωριστή οδηγία
Η ικανοποίηση του ελέγχου ρόλου λέει ότι το ομόλογο είναι κάποιος διακομιστής υπογεγραμμένος από την αρχή σας. Δεν λέει τίποτα για το ποιος, κάτι που έχει σημασία όταν η ίδια CA εκδίδει πιστοποιητικά για πολλές πύλες και μία από αυτές έχει παραβιαστεί ή επαναχρησιμοποιηθεί.
Το verify-x509-name συγκρίνει το υποκείμενο του πιστοποιητικού με μια τιμή που διαμορφώνετε, με τρόπους αντιστοίχισης για ακριβές υποκείμενο, πρόθεμα ή ένα πεδίο. Χρησιμοποιήστε το πεδίο που προσδιορίζει πραγματικά την πύλη, και περιμένετε να το ενημερώσετε σκόπιμα όταν αλλάξει το όνομα.
Καμία από τις δύο οδηγίες δεν αντικαθιστά τον καλό χειρισμό κλειδιών. Αν το αρχείο κλειδιού πελάτη αντιγράφεται τριγύρω μαζί με το προφίλ, η ταυτότητα του ομολόγου είναι τόσο ισχυρή όσο η λίστα διανομής.
Επιθεωρήστε το πιστοποιητικό πριν επεξεργαστείτε το προφίλ
Διαβάστε το πιστοποιητικό του ομολόγου και το αρχείο καταγραφής του πελάτη, με αυτή τη σειρά. Το πιστοποιητικό σας λέει ποιους ρόλους δηλώνει· το αρχείο καταγραφής σας λέει ποιος έλεγχος το απέρριψε.
Αυτές οι εντολές εκτυπώνουν τις επεκτάσεις χρήσης και τις γραμμές επαλήθευσης από μια λεπτομερή σύνδεση:
openssl x509 -in server.crt -noout -text | grep -A1 -E "Key Usage|Extended Key Usage"
sudo openvpn --config client.ovpn --verb 4 2>&1 | grep -i verifyΑν οι επεκτάσεις δείχνουν τον ρόλο διακομιστή και το αρχείο καταγραφής εξακολουθεί να αναφέρει αποτυχία ρόλου, το προφίλ πιθανώς δείχνει σε λάθος αρχείο πιστοποιητικού και όχι σε κακό πιστοποιητικό. Αν οι επεκτάσεις δείχνουν μόνο έλεγχο ταυτότητας πελάτη, σταματήστε να κοιτάτε τον πελάτη και διορθώστε την έκδοση. Σε κάθε περίπτωση, επαναφέρετε τον έλεγχο πριν χαρακτηρίσετε τη σύνδεση υγιή, γιατί μια επιτυχημένη χειραψία μετά την αφαίρεση της επαλήθευσης αποδεικνύει λιγότερα από το σφάλμα που αντικατέστησε.