Δύο προφίλ παρέχουν και τα δύο ένα αρχείο με όνομα ca.crt, η μία σήραγγα ανεβαίνει και η άλλη αποτυγχάνει με σφάλμα αλυσίδας. Το άνοιγμα των δύο αρχείων δίπλα-δίπλα σπάνια το λύνει, και η απενεργοποίηση της επαλήθευσης το λύνει προς τη λάθος κατεύθυνση. Το ερώτημα που θέτει στην πραγματικότητα το σφάλμα είναι στενότερο: ποιο πιστοποιητικό φορτώνει κάθε διεργασία ως άγκυρα εμπιστοσύνης της, και είναι τα δύο το ίδιο αντικείμενο; Απαντήστε πρώτα σε αυτό και η υπόλοιπη διάγνωση αποκτά κατεύθυνση. Το όνομα αρχείου είναι ετικέτα συσκευασίας, και η διαδρομή που γράφεται στο προφίλ δεν είναι επίσης έγκυρη, οπότε όλα εξαρτώνται από το τι διαβάζει πραγματικά η διεργασία.

Βρείτε το πιστοποιητικό που φορτώνει πραγματικά ο πελάτης

Το OpenVPN δέχεται την αρχή σε δύο μορφές, και η μορφή καθορίζει ποια byte έχουν σημασία. Ένα προφίλ μπορεί να δείχνει σε εξωτερικό αρχείο με ca, ή να ενσωματώνει το πιστοποιητικό μέσα σε μπλοκ <ca> στο ίδιο το προφίλ. Όταν υπάρχουν και τα δύο, κερδίζει το ενσωματωμένο μπλοκ και το αρχείο δίπλα στο προφίλ δεν ανοίγει ποτέ.

Διαβάστε το προφίλ που αποτυγχάνει και βρείτε ποια μορφή χρησιμοποιεί πριν συγκρίνετε οτιδήποτε. Ένα αντίγραφο από γειτονικό κατάλογο, ή από το πακέτο από το οποίο ήρθε το άλλο προφίλ, δεν σας λέει τίποτα για το τι εμπιστεύεται αυτή η διεργασία. Το ίδιο ισχύει για τη διαδρομή στη διαμόρφωση: επιλύεται σε σχέση με το σημείο όπου ξεκίνησε ο πελάτης, που δεν είναι πάντα ο κατάλογος που κοιτάτε. Διαβάστε το προφίλ, όχι τον φάκελο.

Τα πιστοποιητικά αναγνωρίζονται από το περιεχόμενό τους: το δημόσιο κλειδί, το υποκείμενο και τον εκδότη, το παράθυρο ισχύος και την υπογραφή πάνω σε όλα αυτά. Δύο αρχεία με πανομοιότυπα byte είναι το ίδιο πιστοποιητικό ό,τι όνομα κι αν έχουν, και δύο αρχεία με το ίδιο όνομα μπορεί να είναι άσχετες αρχές. Το όνομα είναι ετικέτα συσκευασίας, όχι ταυτότητα.

Αποτυπώστε και τα δύο αντίγραφα με openssl

Ένα αποτύπωμα είναι κατακερματισμός πάνω στην κωδικοποίηση DER του πιστοποιητικού, τη μορφή που καλύπτει η υπογραφή, οπότε τα τέλη γραμμών και το κείμενο της κεφαλίδας δεν μπορούν να το επηρεάσουν. Υπολογίστε το για κάθε αρχείο και έχετε δύο δεκαεξαδικά αλφαριθμητικά χωρισμένα με άνω-κάτω τελεία που είτε ταιριάζουν είτε όχι. Δεν χρειάζεται να διαβαστεί τίποτα άλλο στο πιστοποιητικό για να απαντηθεί το ερώτημα της σύγκρισης.

openssl x509 -in /etc/openvpn/office/ca.crt -noout -fingerprint -sha256
openssl x509 -in ~/profiles/lab-ca.pem -noout -fingerprint -sha256

Είναι δελεαστικό να στρέψετε το openssl στο ίδιο το προφίλ, αλλά διαβάζει όποιο μπλοκ πιστοποιητικού εμφανίζεται πρώτο στο αρχείο, και ένα προφίλ συνήθως φέρει <cert> πριν από <ca>. Εξάγετε το μπλοκ της αρχής και μετά αποτυπώστε το εξαγόμενο αρχείο, γιατί αυτό είναι το αντίγραφο που θα χρησιμοποιήσει πραγματικά ο πελάτης.

sed -n '/^<ca>$/,/^<\/ca>$/p' office.ovpn | sed '1d;$d' > /tmp/office-ca.pem
openssl x509 -in /tmp/office-ca.pem -noout -fingerprint -sha256

Τα πανομοιότυπα αποτυπώματα σημαίνουν ότι το υλικό εμπιστοσύνης είναι το ίδιο και το σφάλμα αλυσίδας έχει κάποια άλλη αιτία, που είναι διαφορετική έρευνα. Τα διαφορετικά αποτυπώματα σημαίνουν διαφορετικά πιστοποιητικά, και εκεί ξεκινά η επόμενη ενότητα.

Διαβάστε μια αναντιστοιχία πριν υποθέσετε επίθεση

Τα διαφορετικά αποτυπώματα σημαίνουν διαφορετικά πιστοποιητικά και τίποτα περισσότερο. Μια επανέκδοση, μια περιστροφή, μια αρχή με νέο όνομα ή ένα παρωχημένο πακέτο παράγουν όλα διαφορετικά αρχεία με απολύτως νόμιμες ιστορίες. Ποιο ανήκει στην ανάπτυξη είναι ερώτημα για τον χειριστή ή για το αρχείο ανάπτυξης, όχι για τον χρόνο τροποποίησης του αρχείου. Τα αρχεία αρχειοθέτησης αντιγράφουν χρονικές σημάνσεις, οπότε ένα νεότερο αρχείο δεν είναι αυτόματα η σωστή άγκυρα.

Μια ρίζα που υπογράφει τον εαυτό της είναι φυσιολογική, οπότε το να βρείτε μία δεν είναι απόδειξη προβλήματος. Η δουλειά του επαληθευτή είναι να χτίσει μια διαδρομή από το πιστοποιητικό του διακομιστή στην άγκυρα που του δόθηκε, και ένα σφάλμα αλυσίδας συνήθως σημαίνει ότι αυτή η διαδρομή δεν μπόρεσε να ολοκληρωθεί.

Ελέγξτε αν η άγκυρα του προφίλ που αποτυγχάνει είναι αρχή από την οποία η ανάπτυξη εξακολουθεί να εκδίδει. Αν το αποτύπωμα δεν ταιριάζει με τίποτα στο αρχείο ανάπτυξης, το προφίλ είναι απλώς παρωχημένο, και καμία ρύθμιση στην πλευρά του πελάτη δεν θα το διορθώσει.

Επαναφέρετε την εμπιστοσύνη χωρίς να απενεργοποιήσετε την επαλήθευση

Η βραχυπρόθεσμη λύση είναι να απενεργοποιήσετε την επαλήθευση ή να προσθέσετε κάθε πιστοποιητικό της αλυσίδας ως άγκυρα. Και τα δύο κάνουν το μήνυμα να εξαφανιστεί, και τα δύο αλλάζουν ποιους διακομιστές θα δέχεται ο πελάτης από εκεί και πέρα. Ενεργοποιήστε ξανά την επαλήθευση, εγκαταστήστε την επιθυμητή άγκυρα και δοκιμάστε ξανά.

Αν η αλυσίδα τώρα χτίζεται αλλά εμφανίζεται άλλο σφάλμα, αυτό είναι πρόοδος: η επαλήθευση ονόματος, οι ημερομηνίες ισχύος και η ανάκληση είναι ξεχωριστοί έλεγχοι με ξεχωριστά μηνύματα. Κρατήστε το ζεύγος αποτυπωμάτων και το αρχικό κείμενο του σφάλματος μαζί στο δελτίο, ώστε το επόμενο άτομο να βλέπει ποια άγκυρα φορτώθηκε και ποια αναμενόταν. Ένα ζεύγος αποτυπωμάτων είναι αρκετά μικρό για επικόλληση σε σημείωμα παράδοσης, και η επόμενη περίπτωση τότε παίρνει πέντε λεπτά αντί για ένα απόγευμα.

Αποκτήστε τη σωστή αρχή μέσω του ίδιου πιστοποιημένου καναλιού που παρέδωσε το προφίλ. Το να τραβήξετε ένα πιστοποιητικό από τον διακομιστή επειδή το υποκείμενό του φαίνεται γνωστό είναι διαφορετική πράξη, και διευρύνει σιωπηλά αυτό που θα εμπιστεύεται ο πελάτης.

Σχετικά άρθρα