Νέες συνδέσεις VPN αποτυγχάνουν ενώ τα πιστοποιητικά είναι έγκυρα: ελέγξτε το CRL
Ένα έγκυρο πιστοποιητικό πελάτη και μια ληγμένη λίστα ανάκλησης είναι δύο διαφορετικά αντικείμενα σε δύο διαφορετικά ρολόγια. Διαβάστε τη λίστα που φορτώνει ο διακομιστής και μετά αναγεννήστε την.
Πιστοποιητικά που τους απομένουν μήνες και συνδέσεις που αποτυγχάνουν αμέσως δείχνουν δύο διαφορετικά αντικείμενα με δύο διαφορετικά ρολόγια. Ο διακομιστής απορρίπτει συνδέσεις επειδή η λίστα ανακληθέντων πιστοποιητικών που συμβουλεύεται έχει περάσει τη δική της ημερομηνία λήξης, όχι επειδή τα πιστοποιητικά των χρηστών έγιναν παλιά. Η ανανέωση ενός πιστοποιητικού χρήστη δεν κάνει τίποτα για εκείνη τη λίστα.
Ο διαχωρισμός των δύο χρονοδιαγραμμάτων είναι ολόκληρη η διάγνωση, και αλλάζει το τι πρέπει να είναι η διόρθωση.
Δύο ρολόγια, και μόνο το ένα από αυτά είναι το πιστοποιητικό
Ένα πιστοποιητικό φέρει ένα παράθυρο εγκυρότητας. Μια λίστα ανάκλησης πιστοποιητικών φέρει το δικό της παράθυρο, μαζί με εκδότη και υπογραφή, και οι επαληθευτές αρνούνται να εμπιστευτούν μια λίστα της οποίας ο χρόνος επόμενης ενημέρωσης έχει περάσει. Όταν συμβεί αυτό, ο πελάτης παρουσιάζει ένα απολύτως έγκυρο πιστοποιητικό και ο διακομιστής εξακολουθεί να ρίχνει τη σύνδεση με ένα μήνυμα για τη λίστα. Οι χρήστες διαβάζουν αυτό το μήνυμα ως 'το πιστοποιητικό έληξε', που στέλνει το αίτημα ανανέωσης στο λάθος μέρος.
Τα δύο αντικείμενα έχουν επίσης διαφορετικούς ιδιοκτήτες: το πιστοποιητικό προέρχεται από την CA που το εξέδωσε, ενώ η λίστα παράγεται σε χρονοδιάγραμμα από όποιον διαχειρίζεται αυτή την CA. Ένας χρήστης δεν μπορεί να την ανανεώσει, και η επανέκδοση πιστοποιητικών δεν μπορεί να την παρατείνει.
Διαβάστε τη λίστα που φορτώνει πραγματικά η υπηρεσία
Ξεκινήστε από τη διαμόρφωση που εκτελείται και όχι από το αρχείο που περιμένετε. Η διαδρομή του crl-verify μπορεί να είναι απόλυτη, σχετική με το προφίλ ή αντίγραφο ενσωματωμένο σε ένα image, και ο επαληθευτής διαβάζει αυτό το αντίγραφο. Εξετάστε το επί τόπου με openssl crl -in /etc/openvpn/crl.pem -noout -issuer -lastupdate -nextupdate και συγκρίνετε τις ημερομηνίες με το ρολόι του διακομιστή.
Έπειτα επιβεβαιώστε ότι το αρχείο είναι πραγματικά αυτό που χρησιμοποιείται: ελέγξτε την υπογραφή του με openssl crl -in /etc/openvpn/crl.pem -CAfile /etc/openvpn/ca.crt -noout, το οποίο αναφέρει αποτέλεσμα επαλήθευσης αντί να εκτυπώνει σιωπηλά πεδία. Μια λίστα υπογεγραμμένη από άλλη CA, ή ένα παλιό αντίγραφο που έμεινε σε δεύτερο κατάλογο, αποτυγχάνει ακριβώς όπως μια ληγμένη.
Αναγεννήστε από τη βάση ανάκλησης, όχι από το μηδέν
Η νέα λίστα πρέπει να προέρχεται από την τρέχουσα βάση ανάκλησης της CA, μέσω της εγκεκριμένης διαδικασίας υπογραφής. Η δημιουργία κενής λίστας, ή η αναγέννηση από παλιό αντίγραφο ασφαλείας του ευρετηρίου, αίρει σιωπηλά την ανάκληση κάθε ταυτότητας που προστέθηκε μετά από εκείνο το αντίγραφο. Αυτό μετατρέπει μια διακοπή σύνδεσης σε υποβάθμιση ασφάλειας, και κανείς δεν το προσέχει επειδή το σύμπτωμα εξαφανίζεται.
Κρατήστε το βήμα παραγωγής υπό έλεγχο εκδόσεων μαζί με τα υπόλοιπα εργαλεία της CA, ώστε το διάστημα και το κλειδί υπογραφής να τεκμηριώνονται αντί να θυμούνται. Μια καταχώριση runbook που ονομάζει την εντολή, τον υπογράφοντα και τον στόχο δημοσίευσης αρκεί. Τότε οποιοσδήποτε σε βάρδια μπορεί να αναγεννήσει χωρίς να μαντεύει ποιο αρχείο ευρετηρίου είναι το έγκυρο. Αποθηκεύστε τον σειριακό αριθμό της λίστας και τον χρόνο επόμενης ενημέρωσης μαζί με το αρχείο ανάπτυξης.
Αναπτύξτε εκεί που κοιτάζει ο επαληθευτής
Αντιγράψτε τη νέα λίστα στη διαδρομή που διαβάζει η υπηρεσία, ορίστε ιδιοκτησία και δικαιώματα ώστε ο λογαριασμός υπηρεσίας να μπορεί να τη διαβάσει αλλά οι άλλοι όχι, και επαναφορτώστε ή επανεκκινήστε σύμφωνα με την τεκμηριωμένη συμπεριφορά. Αν ο δαίμονας αποθηκεύει προσωρινά τη λίστα κατά την εκκίνηση, η αντικατάσταση του αρχείου χωρίς επαναφόρτωση δεν αλλάζει τίποτα που θα προσέξει η εκτελούμενη διεργασία. Επιβεβαιώστε τη χρονική σήμανση που αναφέρει η διεργασία μετά την επαναφόρτωση.
Αν πολλές υπηρεσίες επαληθεύουν πελάτες, αναπτύξτε σε καθεμία από αυτές. Η ενημέρωση ενός άκρου και η εγκατάλειψη ενός άλλου με το παλιό αντίγραφο παράγει αποτυχία που εμφανίζεται μόνο στους χρήστες που προσγειώνονται στο δεύτερο. Κρατήστε έναν σύντομο κατάλογο αυτών των άκρων στο ίδιο runbook. Μετά την ανάπτυξη, ελέγξτε την αναφερόμενη ημερομηνία λίστας καθενός αντί να υποθέσετε ότι το αντίγραφο έφτασε.
Κάντε την επόμενη προθεσμία ορατή πριν περάσει
Ένα μεγαλύτερο διάστημα δημοσίευσης μειώνει τη συχνότητα αυτού του συμβάντος χωρίς να δημιουργεί διαδικασία. Επιλέξτε το διάστημα από την πολιτική του διαχειριστή και μετά ειδοποιήστε στο πεδίο επόμενης ενημέρωσης της αναπτυγμένης λίστας με αρκετό περιθώριο για αναγέννηση και ανάπτυξη. Ειδοποιήστε στο αναπτυγμένο αντίγραφο, όχι στον κεντρικό υπολογιστή της CA, γιατί το αναπτυγμένο αντίγραφο είναι αυτό που αποτυγχάνει.
Μετά την ανάπτυξη, επαληθεύστε και τις δύο κατευθύνσεις: ένας επιτρεπόμενος χρήστης συνδέεται, και μια γνωστή ανακληθείσα ταυτότητα εξακολουθεί να αποτυγχάνει. Ο δεύτερος έλεγχος είναι αυτός που πιάνει μια ελλιπή αναγέννηση, και χρειάζεται μία εντολή σε ένα δοκιμαστικό προφίλ που κρατάτε ακριβώς για αυτόν τον σκοπό.