Γιατί απορρίπτει το OpenConnect την πύλη μετά από αλλαγή πιστοποιητικού;
Μια αποτυχία επαλήθευσης μετά από αλλαγή πιστοποιητικού στην πύλη είναι απόφαση εμπιστοσύνης, όχι χαλασμένο τούνελ. Διαλέξτε ανάμεσα στην αρχή έκδοσης και το κάρφωμα ενός κλειδιού.
Οι πύλες αντικαθιστούν πιστοποιητικά, και ένας πελάτης που συνδεόταν χθες αρχίζει να σταματά στην πρώτη ανταλλαγή TLS. Το μήνυμα αναφέρει αιτία επαλήθευσης και όχι βλάβη δικτύου, και το ίδιο το μηχάνημα δεν άλλαξε, κάτι που είναι το χρήσιμο στοιχείο. Αυτό που έσπασε είναι η σχέση ανάμεσα στο πιστοποιητικό που παρουσιάζεται τώρα και τις ρίζες που ο πελάτης δέχεται να εξετάσει. Η επισκευή του είναι απόφαση εμπιστοσύνης, οπότε πάρτε την πριν πληκτρολογήσετε μια επιλογή.
Διαβάστε την αποτυχία πριν αλλάξετε οποιαδήποτε ρύθμιση εμπιστοσύνης
Σφάλμα τύπου «λείπει υπογράφων» σημαίνει ότι η αλυσίδα τελειώνει σε κάτι που ο πελάτης δεν δέχεται. Μπορεί να είναι ανανεωμένο πιστοποιητικό από εσωτερική αρχή, αντικατάσταση από δημόσια, ή συσκευή στη μέση που παρουσιάζει το δικό της πιστοποιητικό. Μόνο η διατύπωση δεν μπορεί να ξεχωρίσει αυτές τις περιπτώσεις, οπότε κοιτάξτε τον εκδότη πριν αποφασίσετε.
Εκτελέστε τη σύνδεση μία φορά στο προσκήνιο και αφήστε την να αποτύχει, γιατί η διαδραστική έξοδος φέρει το όνομα του διακομιστή, την αλυσίδα του εκδότη και το αποτύπωμα που υπολόγισε ο πελάτης. Συγκρίνετε αυτόν τον εκδότη με αρχή που διαχειρίζεται πραγματικά ο οργανισμός σας. Αν το αποτύπωμα άλλαξε ενώ ο εκδότης όχι, θεωρήστε το ύποπτο μέχρι να επιβεβαιωθεί ανανέωση μέσω καναλιού που ήδη εμπιστεύεστε. Το να μαντεύετε σε αυτό το σημείο είναι ο τρόπος με τον οποίο κάποιος καταλήγει να καρφώνει το κλειδί ενός παρεμβολέα.
Καταγράψτε την έκδοση του πελάτη στην ίδια σημείωση. Μεγάλο μέρος των αποτυχιών που μοιάζουν με προβλήματα εμπιστοσύνης προέρχεται από παλαιότερο πελάτη που συναντά νεότερη ανταλλαγή της πύλης.
Διαλέξτε ανάμεσα στο να εμπιστευτείτε τον εκδότη και στο να καρφώσετε ένα κλειδί
Και οι δύο επιλογές κάνουν τη σύνδεση να πετύχει. Σπάνε αργότερα με αντίθετους τρόπους, οπότε η επιλογή ανήκει στην αποτυχία που μπορείτε να ανεχτείτε.
| Approach | Good fit | What breaks it |
|---|---|---|
Trust the issuing CA with --cafile | Internal PKI you can obtain over an already trusted channel | CA rotation, or a client that still falls back to public roots |
Pin one key with --servercert | No CA relationship, or exactly one key should ever be accepted | Any reissue that generates a new key pair |
Καταφύγετε στο αρχείο CA όταν το πιστοποιητικό προέρχεται από αρχή που μπορείτε να επαληθεύσετε ανεξάρτητα, γιατί τότε οι ανανεώσεις συνεχίζουν να δουλεύουν χωρίς να αγγίξετε τα ορίσματα του πελάτη. Συνδυάστε το με τον διακόπτη που απενεργοποιεί τις ρίζες του συστήματος, αλλιώς μια δημόσια αρχή μπορεί να ικανοποιήσει τον έλεγχο για λογαριασμό σας. Καρφώστε αντί γι' αυτό όταν η πύλη δεν έχει CA που μπορείτε να αποκτήσετε ή όταν η στενότερη δυνατή εξαίρεση είναι ο στόχος. Κανένας δρόμος δεν είναι ασφαλέστερος αφηρημένα: η CA κλιμακώνει στις ανανεώσεις, το κάρφωμα ελέγχεται ευκολότερα.
Όποιο κι αν διαλέξετε, η έμπιστη τιμή πρέπει να φτάσει μέσω καναλιού που ήταν έμπιστο πριν συμβεί η αλλαγή. Ένας διαχειριστής, μια συνεδρία κονσόλας στην πύλη ή ένα αντίγραφο που ελήφθη εκ των προτέρων όλα αρκούν. Το να αντιγράψετε όποιο αποτύπωμα εμφανίσει η προτροπή είναι βολικό και είναι ακριβώς αυτό που ελπίζει ένας παρεμβολέας.
Βάλτε την τιμή στην εντολή που εκκινείτε πραγματικά
Το κάρφωμα ταξιδεύει σε μια επιλογή πιστοποιητικού διακομιστή, και το πρόθεμά της αποφασίζει την κωδικοποίηση: δεκαεξαδικά σύνολα δημόσιου κλειδιού κάτω από sha1 ή sha256, και το κάρφωμα κλειδιού base64 κάτω από pin-sha256. Η παροχή του απενεργοποιεί επίσης την εμπιστοσύνη του συστήματος για εκείνη την εκτέλεση, ώστε το καρφωμένο κλειδί να γίνεται ολόκληρη η απόφαση.
sudo openconnect --protocol=gp vpn.example.com --user alice \
--servercert pin-sha256:AbCdEf... # single key pin
sudo openconnect vpn.example.com --cafile /etc/ssl/internal-ca.pem --no-system-trust
Ο πελάτης ταιριάζει κολοβωμένο σύνολο, δεχόμενος μόλις τέσσερις χαρακτήρες μετά το πρόθεμα, κάτι που είναι παγίδα και όχι διευκόλυνση. Μια συντομευμένη τιμή περνά τοπικά και ακόμη δεν ταυτοποιεί την πύλη που σκοπεύατε. Αντιγράψτε ολόκληρη τη συμβολοσειρά που τύπωσε ο πελάτης στην πρώτη προσπάθεια αντί να την ξαναγράψετε από ένα μήνυμα. Έπειτα μετακινήστε την έτοιμη επιλογή στο σκριπτ περιτυλίγματος, στο αρχείο μονάδας ή στο προφίλ που εκκινεί τη σύνδεση, ώστε η απόφαση εμπιστοσύνης να είναι αναθεωρήσιμη και οι μεταγενέστερες αλλαγές σκόπιμες.
Οι εκκινητές επιφάνειας εργασίας και το πρόσθετο NetworkManager αποθηκεύουν δικό τους αντίγραφο των ορισμάτων σύνδεσης. Ένα σκριπτ που επεξεργάστηκε στον δίσκο δεν φτάνει σε προφίλ που εισήχθη νωρίτερα, οπότε η αποθηκευμένη τιμή εξακολουθεί να κερδίζει.
Χειριστείτε μια εναλλαγή χωρίς να κλειδωθείτε έξω
Η επιλογή μπορεί να δοθεί περισσότερες από μία φορές, ώστε μια προγραμματισμένη αλλαγή να δέχεται μαζί το εξερχόμενο και το εισερχόμενο κλειδί. Προσθέστε το νέο κάρφωμα πριν αλλάξει η πύλη, κρατήστε και τα δύο στη λίστα όσο μεταναστεύουν οι συνεδρίες, και αφαιρέστε το συνταξιοδοτημένο μόλις φύγει το παλιό κλειδί. Αυτό το παράθυρο χρειάζεται υπεύθυνο, αφού ένα ξεχασμένο διπλό κάρφωμα αφήνει ένα κλειδί έμπιστο χωρίς κανέναν να το προσέχει. Μια ανακατασκευή που παράγει νέο ζεύγος κλειδιών σπάει το καθαρό κάρφωμα, και η ανάκτηση είναι η ίδια διαδικασία προς την άλλη κατεύθυνση.
Γράψτε την ημερομηνία αλλαγής δίπλα στο κάρφωμα. Ένα κάρφωμα χωρίς ημερομηνία αναθεώρησης είναι μελλοντική διακοπή που φέρει μπερδεμένο μήνυμα σφάλματος.
Αποκλείστε την έκδοση του πελάτη πριν επεξεργαστείτε την εμπιστοσύνη
Ένας παλιός πελάτης μπορεί να αποτύχει κατά την ανάλυση απάντησης ταυτοποίησης που η πύλη έχει έκτοτε αλλάξει, και το μήνυμα επιφάνειας μιλά ακόμη για τη σύνδεση και όχι για τον αναλυτή. Συγκρίνετε την εγκατεστημένη έκδοση με ό,τι τεκμηριώνει η πύλη, και δοκιμάστε ένα τρέχον πακέτο σε προφίλ μιας χρήσης πριν αλλάξετε οποιαδήποτε ρύθμιση εμπιστοσύνης.
openconnect --version
Μετά την επισκευή, επαληθεύστε δύο πράγματα αντί για ένα: η διαδικτυακή πύλη φορτώνει μέσα από το τούνελ, και μια συνηθισμένη εσωτερική διεύθυνση απαντά. Μια ολοκληρωμένη χειραψία αποδεικνύει μόνο ότι η απόφαση εμπιστοσύνης έγινε δεκτή.