Πιστοποιητικό VPN που δεν είναι ακόμη έγκυρο: τρεις αιτίες, μία σειρά ελέγχου
Το «όχι ακόμη έγκυρο» σημαίνει ότι το ρολόι της συσκευής πηγαίνει πίσω, ότι το παράθυρο αρχίζει πραγματικά αργότερα ή ότι ένα ενδιάμεσο πιστοποιητικό δεν έχει ανοίξει ακόμη. Ελέγξτε τα με αυτή τη σειρά.
Ανοίγετε τον πελάτη, επιλέγετε το προφίλ που χρησιμοποιείτε εδώ και μήνες και σταματά με «certificate is not yet valid». Τίποτα στη σύνδεσή σας δεν άλλαξε και το χώρο αποθήκευσης εμπιστοσύνης πιθανότατα είναι εντάξει: το πιστοποιητικό που παρουσιάζεται στη χειραψία φέρει ένα παράθυρο εγκυρότητας που αρχίζει αργότερα από τη στιγμή που χρησιμοποιεί ο επαληθευτής. Τρεις διαφορετικές καταστάσεις παράγουν ακριβώς αυτό το μήνυμα και απαιτούν διαφορετικές ενέργειες. Η σειρά παρακάτω σας λέει ποια έχετε πριν αγγίξετε ένα ρολόι ή ένα αρχείο πιστοποιητικού.
Ποια από τις τρεις αιτίες βλέπετε
Η πρώτη αιτία είναι τοπική: η συσκευή που κάνει τον έλεγχο έχει ρολόι παλαιότερο από την ημερομηνία έναρξης του πιστοποιητικού. Το βλέπετε σε υλικό με νεκρή μπαταρία CMOS, σε εικονικές μηχανές που επαναφέρθηκαν από παλιό snapshot, σε συσκευές που έμειναν κλειστές αρκετό καιρό ώστε να χάσουν την ώρα, και σε δίκτυα όπου το εξερχόμενο NTP είναι μπλοκαρισμένο και κανείς δεν το πρόσεξε. Το πιστοποιητικό μπορεί να είναι απολύτως έγκυρο και παρόλα αυτά να αποτυγχάνει με αυτόν τον τρόπο.
Η δεύτερη αιτία ανήκει στον εκδότη, γιατί το πιστοποιητικό πραγματικά αρχίζει στο μέλλον: εκδόθηκε νωρίς, δημιουργήθηκε με ρητή ώρα έναρξης ή υπογράφηκε ως μέρος ενός βήματος ενεργοποίησης που δεν έχει εκτελεστεί. Η τρίτη αιτία σπαταλά τον περισσότερο χρόνο, γιατί το φύλλο είναι τρέχον ενώ ένα άλλο πιστοποιητικό στην αλυσίδα που παρουσιάστηκε δεν είναι, οπότε το σφάλμα ονομάζει υλικό που δεν εγκαταστήσατε ποτέ.
Μία ερώτηση τα χωρίζει. Ακολουθεί η αποτυχία τη συσκευή ή την υπηρεσία; Δύο μηχανήματα στο ίδιο δίκτυο που συμπεριφέρονται διαφορετικά δείχνουν ρολόγια. Κάθε πελάτης που αποτυγχάνει με τον ίδιο τρόπο δείχνει το παράθυρο του πιστοποιητικού και την αλυσίδα πίσω του.
Διαβάστε το παράθυρο από το πιστοποιητικό που παρουσιάστηκε πραγματικά
Μην εξετάζετε ένα αρχείο PEM που έμεινε από παλιότερη ανάπτυξη, αλλά ζητήστε από την υπηρεσία την αλυσίδα που στέλνει τώρα. Το openssl s_client -connect vpn.example.com:443 -servername vpn.example.com -showcerts εκτυπώνει κάθε πιστοποιητικό της αλυσίδας. Αποθηκεύστε το μπλοκ που σας ενδιαφέρει και εκτελέστε το openssl x509 -noout -subject -issuer -dates· το τελευταίο εκτυπώνει notBefore και notAfter, και αυτές οι δύο τιμές αποφασίζουν. Στα Windows, ο διάλογος πιστοποιητικού της σύνδεσης και το certutil -dump σε εξαγόμενο αρχείο δείχνουν τα ίδια πεδία.
Διαβάστε και τα δύο άκρα του παραθύρου, όχι μόνο την αρχή. Ένα πιστοποιητικό που ανοίγει σε δύο ώρες και ένα που κλείνει σε δύο ώρες αποτυγχάνουν με διαφορετικά μηνύματα και αφορούν διαφορετικές ομάδες. Σημειώστε ποιο πιστοποιητικό ονομάζει το σφάλμα — φύλλο, ενδιάμεσο ή ρίζα — γιατί αυτό καθορίζει αν μπορεί να διορθωθεί οτιδήποτε στην πλευρά του πελάτη.
Μπορείτε επίσης να δοκιμάσετε το παράθυρο χωρίς να το περιμένετε. Η επαλήθευση δέχεται ρητή ώρα: το openssl verify -attime 1793600000 -CAfile ca.pem -untrusted intermediate.pem leaf.pem αξιολογεί την αλυσίδα σε εκείνη τη χρονική σήμανση. Εκτελέστε το με την τρέχουσα ώρα για να αναπαράγετε την αποτυχία και μετά με την ώρα έναρξης του πιστοποιητικού για να επιβεβαιώσετε ότι η ίδια αλυσίδα περνά μόλις ανοίξει το παράθυρο. Το RFC 5280 ορίζει το πεδίο εγκυρότητας και τον κανόνα ότι ένα πιστοποιητικό δεν πρέπει να χρησιμοποιείται εκτός του, και αυτός είναι ο κανόνας που μόλις επέβαλε ο πελάτης σας.
Το ρολόι σας ή το δικό τους
Συγκρίνετε το ρολόι της συσκευής με την έναρξη του πιστοποιητικού σε UTC, από πηγή που εμπιστεύεστε. Το date -u δίνει τη στιγμή, και το timedatectl status σε κεντρικό υπολογιστή systemd αναφέρει επίσης αν το ρολόι είναι συγχρονισμένο. Στα Windows, το w32tm /query /status δείχνει την τρέχουσα πηγή και τον τελευταίο επιτυχή συγχρονισμό. Η ζώνη ώρας στη γραμμή εργασιών είναι επιλογή προβολής και όχι λάθος ρολόι, αφού ο επαληθευτής συγκρίνει στιγμές UTC.
| What you see | Most likely reading | Next step |
|---|---|---|
| Clock behind, one device affected | Local time fault | Resync time, keep validation on, retest |
| Clock correct, window opens soon | Certificate staged early | Wait for the window or follow the cutover plan |
| Clock correct, intermediate not yet valid | Chain material mismatch | Operator replaces the intermediate |
| Some peers pass, others do not | Inconsistent nodes | Record each peer's chain before changing anything |
Αν το ρολόι πηγαίνει πίσω, συγχρονίστε ξανά και δοκιμάστε ξανά πριν αλλάξετε οποιοδήποτε υλικό πιστοποιητικού. Μια συσκευή που είναι λεπτά ή ώρες λάθος απορρίπτει κάθε πρόσφατα εκδοθέν πιστοποιητικό που συναντά, όχι μόνο μία υπηρεσία, οπότε μια εξήγηση μιας υπηρεσίας είναι συνήθως η λάθος. Αν το ρολόι είναι σωστό και συγχρονισμένο, σταματήστε να κοιτάτε τη συσκευή: το παράθυρο ανήκει στον εκδότη και καμία τοπική ρύθμιση δεν πρέπει να προσαρμοστεί για να περάσει.
Αυτός ο πίνακας είναι η όλη απόφαση. Η μετακίνηση του ρολογιού σε ό,τι περιμένει το πιστοποιητικό δεν είναι επισκευή, και η απενεργοποίηση των ελέγχων ώρας δεν είναι επίσης, γιατί και τα δύο κρύβουν την κατάσταση που παρήγαγε το σφάλμα.
Γιατί αποτυγχάνει η αλυσίδα ενώ το φύλλο φαίνεται καλό
Τα ανανεωμένα φύλλα και τα πιστοποιητικά αντικατάστασης ενδιάμεσων συνήθως αποστέλλονται μαζί και δεν προσγειώνονται πάντα την ίδια στιγμή. Μια υπηρεσία μπορεί να στείλει ένα νέο φύλλο υπογεγραμμένο από ενδιάμεσο του οποίου το δικό του παράθυρο αρχίζει αργότερα, ή να συνεχίσει να εξυπηρετεί ένα παλαιότερο ενδιάμεσο κάτω από ένα φρέσκο φύλλο. Και στις δύο περιπτώσεις η αλυσίδα αποτυγχάνει ενώ οι ημερομηνίες του ίδιου του φύλλου φαίνονται λογικές.
Τα τελικά σημεία με εξισορρόπηση φορτίου μετατρέπουν αυτό από χαλασμένο σε ασυνεπές. Αν μια επανάληψη πετύχει, ή ένα δίκτυο λειτουργεί ενώ ένα άλλο όχι, καταγράψτε ποιος ομότιμος απάντησε και ποια αλυσίδα έστειλε πριν αλλάξετε ρυθμίσεις. Το openssl s_client εκτυπώνει τη συνδεδεμένη διεύθυνση, οπότε μερικές προσπάθειες αποκαλύπτουν αν κάθε κόμβος εξυπηρετεί την ίδια αλυσίδα.
Δρόμοι επισκευής που διατηρούν την επαλήθευση
Ένα πρόβλημα ρολογιού διορθώνεται στη συσκευή με την επαλήθευση ενεργή. Ένα πρόβλημα πιστοποιητικού διορθώνεται από τον χειριστή με υλικό που εκδόθηκε για παράθυρο που περιλαμβάνει ήδη το τώρα. Καμία ρύθμιση πελάτη δεν κάνει έγκυρο ένα πιστοποιητικό που δεν είναι ακόμη έγκυρο, και οι σημαίες που παρακάμπτουν τους ελέγχους ώρας υπάρχουν για να επιβεβαιώνετε μια διάγνωση, όχι για να τις στέλνετε σε παραγωγή.
Όταν το πιστοποιητικό προετοιμάζεται για προγραμματισμένη ενεργοποίηση, ακολουθήστε το σχέδιο μετάβασης. Εγκαταστήστε το όταν ανοίξει το παράθυρό του ή χρησιμοποιήστε τη διαδικασία επικάλυψης που τεκμηριώνει ο πάροχος, αντί να το εγκαταστήσετε νωρίς και να μάθετε στους χρήστες να κάνουν κλικ στις προειδοποιήσεις. Οι προειδοποιήσεις που οι άνθρωποι μαθαίνουν να αγνοούν κοστίζουν περισσότερο από μια σύντομη καθυστέρηση.
Τέλος, δοκιμάστε ξανά με τον τρόπο που συνέβη η αποτυχία: νέα συνεδρία, ο ίδιος πελάτης, ο πόρος που πραγματικά χρειάζεστε. Οι βιβλιοθήκες TLS μπορεί να αποθηκεύουν στην προσωρινή μνήμη μια επαληθευμένη αλυσίδα για όλη τη διάρκεια μιας σύνδεσης και μια συνεδρία που συνεχίστηκε δεν την ελέγχει απαραίτητα ξανά, οπότε μια παλιά συνεδρία μπορεί να συνεχίσει να αποτυγχάνει μετά τη διόρθωση ή να συνεχίσει να λειτουργεί μετά από μια παλινδρόμηση. Ένα αρχείο που ανοίγει σε ένα πρόγραμμα προβολής αποδεικνύει μόνο ότι το αρχείο είναι αναγνώσιμο, ενώ μια ολοκληρωμένη χειραψία αποδεικνύει ότι η αλυσίδα επαληθεύεται.
Πριν κλείσετε το δελτίο, επιβεβαιώστε τέσσερα πράγματα: την ώρα UTC και την κατάσταση συγχρονισμού της συσκευής που αποτυγχάνει, το notBefore και το notAfter κάθε πιστοποιητικού στην αλυσίδα που παρουσιάστηκε, την ίδια αλυσίδα από δεύτερο πελάτη και το όνομα που δίνει το σφάλμα στο πιστοποιητικό. Αν το ρολόι είναι σωστό και το παράθυρο δεν έχει ανοίξει, τα υπόλοιπα είναι δουλειά του χειριστή, και η σωστή κίνηση από την πλευρά σας είναι να περιμένετε το παράθυρο αντί να αποδυναμώσετε τον έλεγχο.