Πώς να επαληθεύσετε ένα αποτύπωμα πιστοποιητικού VPN από ξεχωριστό κανάλι
Ένα αποτύπωμα αποδεικνύει ταυτότητα μόνο όταν η αναμενόμενη τιμή φτάνει από κανάλι που ο επιτιθέμενος δεν ελέγχει. Εκτελέστε τον έλεγχο με αυτή τη σειρά.
Ένα αποτύπωμα είναι τόσο αξιόπιστο όσο το κανάλι που σας είπε τι να περιμένετε. Αν η τιμή με την οποία συγκρίνετε έφτασε από την ίδια σύνδεση που δοκιμάζετε, η σύγκριση δεν αποδεικνύει τίποτα πέρα από το ότι όποιος ελέγχει αυτή τη σύνδεση είναι συνεπής. Ο έλεγχος πρέπει να εκτελείται με σταθερή σειρά, και ένα αποτυχημένο βήμα πρέπει να σας σταματήσει αντί να σας σπρώξει στο επόμενο. Αυτή είναι η σειρά που χρησιμοποιώ όταν ένας πελάτης VPN αναφέρει ότι άλλαξε ένα πιστοποιητικό.
Ονομάστε το αντικείμενο πριν ονομάσετε την τιμή
Αποφασίστε αν η αναμενόμενη τιμή ανήκει στο φύλλο πιστοποιητικού του διακομιστή, στην αρχή έκδοσης CA ή στο δημόσιο κλειδί μέσα στο φύλλο. Πρόκειται για τρεις διαφορετικούς ελέγχους και αποτυγχάνουν με διαφορετικούς τρόπους. Ένα αποτύπωμα CA που ταιριάζει δεν καρφιτσώνει τον διακομιστή, και ένα hash δημόσιου κλειδιού επιβιώνει σκόπιμα από μια επανέκδοση που κρατά το ίδιο κλειδί.
Σημειώστε και τον αλγόριθμο. Το SHA-256 είναι η κανονική προσδοκία τώρα, αλλά παλαιότερα εργαλεία τύπωναν SHA-1 αν δεν ζητούσατε κάτι άλλο, και μια δεκαεξαδική τιμή 40 χαρακτήρων είναι σημάδι ότι πρόκειται να συγκρίνετε δύο διαφορετικά πράγματα.
Φέρτε την αναμενόμενη τιμή από δεύτερο κανάλι
Το δεύτερο κανάλι πρέπει να είναι ένα στο οποίο το μέρος από το οποίο φυλάγεστε δεν μπορεί να γράψει. Ένα σύστημα παροχής στο οποίο ήδη πιστοποιείστε, ένα τυπωμένο αρχείο σε θυρίδα, μια βάση δεδομένων ρυθμίσεων ή ένα υπογεγραμμένο έγγραφο που παραδίδει άλλη διεργασία, όλα είναι κατάλληλα. Ένα μήνυμα συνομιλίας από συνάδελφο, μια σελίδα υποστήριξης που φτάσατε μέσω αποτελέσματος αναζήτησης και οτιδήποτε επικολλήθηκε στο τερματικό όπου ήδη κάνετε αποσφαλμάτωση δεν είναι κατάλληλα.
Ζητήστε την πλήρη τιμή και τον αλγόριθμο, ποτέ πρόθεμα. Οι άνω και κάτω τελείες και η κεφαλαιοποίηση δεν έχουν σημασία, αλλά η περικοπή μετατρέπει έναν έλεγχο 256 bit σε παιχνίδι μαντεψιάς.
Αν κανείς δεν μπορεί να παράγει την αναμενόμενη τιμή από ανεξάρτητη πηγή, το έντιμο αποτέλεσμα είναι ότι αυτό το πιστοποιητικό δεν μπορεί να επαληθευτεί σήμερα. Το να το πείτε είναι καλύτερο από το να καρφιτσώσετε ό,τι μόλις εμφάνισε ο πελάτης, κάτι που μετατρέπει μια προειδοποίηση σε συνήθεια.
Εξαγάγετε την τιμή από τη δική σας πλευρά
Για αρχείο πιστοποιητικού, η εντολή είναι openssl x509 -in server.crt -noout -fingerprint -sha256. Η ρητή σύνοψη μετράει: χωρίς αυτήν, η έξοδος εξαρτάται από την έκδοση OpenSSL σας. Το αποτέλεσμα είναι ένα δεκαεξαδικό αλφαριθμητικό χωρισμένο με άνω και κάτω τελείες, οπότε αφαιρέστε τις τελείες και μετατρέψτε και τις δύο πλευρές σε πεζά πριν συγκρίνετε.
Για τελικό σημείο που μιλά TLS απευθείας, συνδεθείτε και διοχετεύστε το πιστοποιητικό έξω: openssl s_client -connect vpn.example.com:443 -servername vpn.example.com < /dev/null | openssl x509 -noout -fingerprint -sha256. Αυτό λειτουργεί για πίνακα διαχείρισης ιστού ή ακροατή TLS, όχι για το OpenVPN, του οποίου το κανάλι ελέγχου βρίσκεται μέσα στη σήραγγα. Για το OpenVPN, διαβάστε το πιστοποιητικό από το προφίλ στον δίσκο αντί να προσπαθείτε να το συλλάβετε από τον υποδοχέα.
Η σύγκριση πρέπει να είναι μηχανική. Κανονικοποιήστε και τις δύο τιμές με tr -d ':' και μετατροπή πεζών, και μετά συγκρίνετε ολόκληρο το αλφαριθμητικό. Η σύγκριση με το μάτι είναι ο τρόπος με τον οποίο ένα ταιριαστό πρόθεμα κρύβει μια διαφορά στο τελευταίο byte. Αν τα αλφαριθμητικά διαφέρουν, θεωρήστε τη διαφορά πραγματική πριν αναζητήσετε εξήγηση.
Συνθήκες διακοπής
Σταματήστε αν το αντικείμενο διαφέρει, γιατί ένα αποτύπωμα CA δεν μπορεί να αθωώσει ένα φύλλο πιστοποιητικού και ένα φύλλο δεν μπορεί να αθωώσει την CA. Σταματήστε αν ο αλγόριθμος διαφέρει, γιατί μια τιμή SHA-1 σε σύγκριση με μια τιμή SHA-256 δεν σας λέει τίποτα. Σταματήστε αν το αποτύπωμα ταιριάζει αλλά το πιστοποιητικό έχει λήξει, ανακληθεί ή εκδοθεί για άλλο όνομα· ένα ταιριαστό hash δεν είναι έλεγχος εγκυρότητας και δεν επιδιορθώνει μια σπασμένη αλυσίδα. Σταματήστε επίσης αν ο σειριακός αριθμός δεν ταιριάζει με τον σειριακό αριθμό στο αρχείο ελέγχου, γιατί αυτός είναι ο φθηνότερος τρόπος να εντοπίσετε ένα υποκατεστημένο πιστοποιητικό.
Σταματήστε αν η νέα τιμή έφτασε από το κανάλι που δοκιμάζατε. Η περιστροφή μπορεί να αλλάξει νόμιμα ένα αποτύπωμα, αλλά η τιμή αντικατάστασης πρέπει να έρθει από την έμπιστη διεργασία, όχι από το παράθυρο προειδοποίησης που προκάλεσε την ερώτηση.
Σταματήστε αν η προτεινόμενη διόρθωση είναι να απενεργοποιήσετε την επαλήθευση ονόματος κεντρικού υπολογιστή ή αλυσίδας. Ένα αποτύπωμα προσθέτει έναν περιορισμό στους κανονικούς ελέγχους· δεν τους αντικαθιστά εκτός αν η ανάπτυξη έχει επιλέξει σκόπιμα μοντέλο μόνο με pin, και αυτή η επιλογή έχει το δικό της λειτουργικό κόστος.
Μετά τη σύγκριση
Καταγράψτε τι συγκρίνατε, από πού ήρθε η αναμενόμενη τιμή και πότε. Αν το πιστοποιητικό επανεκδόθηκε, ενημερώστε την αποθηκευμένη προσδοκία μέσω του ίδιου έμπιστου καναλιού και σημειώστε τον νέο σειριακό αριθμό, γιατί ο σειριακός αριθμός είναι αυτός που κάνει την επόμενη περιστροφή ελέγξιμη.
Στη συνέχεια να είστε σαφείς για τα όρια. Ένα αποτύπωμα επιβεβαιώνει ότι το πιστοποιητικό που έχετε είναι αυτό που κάποιος σας είπε να περιμένετε. Δεν λέει τίποτα για το αν ο κεντρικός υπολογιστής είναι απαραβίαστος, ούτε για το αν η υπηρεσία καταγράφει ή περιορίζει το τι μπορεί να προσεγγίσει αυτό το πιστοποιητικό.