Τι ελέγχει ο πελάτης VPN σας πριν εμπιστευτεί ένα πιστοποιητικό
Περάστε μια προειδοποίηση πιστοποιητικού από τις τέσσερις πύλες που ελέγχει ο πελάτης σας: εμπιστοσύνη CA, δόμηση αλυσίδας, όνομα και σκοπός ομοτίμου, και πολιτική ανάκλησης.
Ο πελάτης VPN σας λέει ότι το πιστοποιητικό δεν μπόρεσε να επαληθευτεί, και ο διάλογος σταματά εκεί. Το αρχείο υπάρχει, ο διακομιστής λειτουργεί, και το ίδιο προφίλ δούλεψε σε άλλο φορητό υπολογιστή τον περασμένο μήνα. Κάτω από αυτή την προειδοποίηση μίας γραμμής ο πελάτης πέρασε το πιστοποιητικό του ομοτίμου από τέσσερις πύλες: μια αρχή πιστοποιητικών που διαμορφώσατε εγγυάται τη διαδρομή υπογραφής, αυτή η διαδρομή φτάνει στην αρχή, το όνομα του ομοτίμου είναι αυτό που ζητήσατε, και το πιστοποιητικό είναι τώρα χρησιμοποιήσιμο για αυτόν τον σκοπό. Βρείτε την πύλη που έκλεισε και η επισκευή είναι συνήθως ένα αρχείο· αν παραλείψετε αυτό το βήμα, θα εισάγετε ξανά πακέτα όλο το απόγευμα.
Διαβάστε τον διάλογο πριν επεξεργαστείτε το προφίλ
Τα σφάλματα πιστοποιητικών τα διατυπώνει η βιβλιοθήκη από κάτω, όχι το προϊόν VPN που εγκαταστήσατε, οπότε το ακριβές κείμενο είναι η πρώτη σας απόδειξη. Το «Δεν ήταν δυνατή η λήψη πιστοποιητικού τοπικού εκδότη» δείχνει τη διαδρομή ή την άγκυρα εμπιστοσύνης. Το «Το πιστοποιητικό έχει λήξει ή δεν είναι ακόμη έγκυρο» δείχνει τον χρόνο. Το «Μη υποστηριζόμενος σκοπός πιστοποιητικού» δείχνει την εκτεταμένη χρήση κλειδιού. Μια αναντιστοιχία ονόματος σας λέει ποιο όνομα ήθελε. Κανένα από τα τέσσερα δεν επισκευάζεται με επανεγκατάσταση του πελάτη.
Αυξήστε την καταγραφή πριν αλλάξετε οτιδήποτε. Το OpenVPN αναφέρει την αποτυχία επαλήθευσης γύρω από τη χειραψία όταν το εκτελέσετε με --verb 4, και το strongSwan καταγράφει τις αποφάσεις ταυτότητας και αλυσίδας στο αρχείο καταγραφής charon. Στη συνέχεια επιβεβαιώστε ποιο πιστοποιητικό εξετάζετε, γιατί οι άνθρωποι συνήθως δοκιμάζουν το αρχείο στον δίσκο ενώ το προφίλ ενσωματώνει παλαιότερο αντίγραφο. Όταν το προφίλ ενσωματώνει μπλοκ PEM, το ενσωματωμένο πιστοποιητικό είναι αυτό που δοκιμάζεται.
Μια αρχή πιστοποιητικών υπογράφει ταυτότητες, όχι άδειες
Η αρχή κρατά ένα όνομα και ένα κλειδί υπογραφής. Εκδίδει πιστοποιητικά που δεσμεύουν ένα δημόσιο κλειδί σε αυτό το όνομα βάσει της δικής της πολιτικής, με παράθυρο ισχύος και περιορισμούς χρήσης. Ο πελάτης σας χρειάζεται μόνο το πιστοποιητικό της αρχής για να αναγνωρίσει τον εκδότη· δεν χρειάζεται ποτέ το κλειδί υπογραφής, και η αποστολή αυτού του κλειδιού στους πελάτες θα τους έδινε τη δυνατότητα να κατασκευάζουν οποιαδήποτε ταυτότητα εμπιστεύεται η ανάπτυξη.
Η εμπιστοσύνη σε μια αρχή κάνει κάθε πιστοποιητικό που υπέγραψε υποψήφιο, όχι τον σωστό ομότιμο. Ένα πιστοποιητικό διακομιστή ιστού από την ίδια εσωτερική CA είναι επίσης υποψήφιο. Γι’ αυτό υπάρχουν οι πύλες ονόματος και σκοπού, και γι’ αυτό ένα παραβιασμένο κλειδί CA μετράει περισσότερο από κάθε μεμονωμένο διακομιστή: φτάνει σε κάθε ταυτότητα που εξέδωσε ποτέ η αρχή. Διανείμετε πιστοποιητικά πελάτη ανά συσκευή, ώστε ένας χαμένος φορητός να είναι μία ανάκληση αντί για ανανέωση κλειδιών σε όλη την ανάπτυξη.
Ξαναχτίστε τη διαδρομή που προσπαθεί να χτίσει ο πελάτης
Η διαδρομή ξεκινά από το πιστοποιητικό του ομοτίμου, περνά από μηδέν ή περισσότερα ενδιάμεσα πιστοποιητικά, και καταλήγει σε μια ρίζα στο χώρο εμπιστοσύνης σας. Ένα ενδιάμεσο πιστοποιητικό που λείπει είναι η συχνότερη αστοχία αλυσίδας, και από την πλευρά του πελάτη μοιάζει ίδιο με μια μη έμπιστη ρίζα. Διαβάστε πρώτα το φύλλο, και μετά αφήστε το OpenSSL να χτίσει τη διαδρομή από το υλικό που σκοπεύετε να στείλετε.
openssl x509 -in server.crt -noout -subject -issuer -dates
openssl verify -CAfile root.crt -untrusted intermediate.crt server.crt
openssl verify -show_chain -CAfile root.crt -untrusted intermediate.crt server.crt
Κατάσταση εξόδου μηδέν σημαίνει ότι η διαδρομή χτίστηκε από αυτά τα αρχεία· μια αποτυχία ονομάζει το πιστοποιητικό που δεν μπόρεσε να φτάσει. Αν το openssl verify πετύχει ενώ ο πελάτης συνεχίζει να αρνείται, η διαφορά είναι σε αυτό που στέλνει πραγματικά ο διακομιστής ή σε ποιο αρχείο εμπιστοσύνης φορτώνει το προφίλ. Στο OpenVPN, τα ενδιάμεσα μπορούν να συνοδεύουν το αρχείο πιστοποιητικού του διακομιστή ή να παρέχονται χωριστά με το --extra-certs, και ένα πακέτο με δύο ρίζες γραμμένες κάτω από το ίδιο όνομα θέματος θα στείλει έναν από τους πελάτες σας στον λάθος κλάδο.
Το όνομα και ο σκοπός είναι ξεχωριστές πύλες
Η δόμηση αλυσίδας δεν ρωτά ποτέ αν το όνομα είναι δικό σας. Το OpenVPN το ελέγχει μόνο όταν το προφίλ ορίζει το --verify-x509-name, και η παλαιότερη συνήθεια να ταιριάζει μόνο το κοινό όνομα σπάει σε πιστοποιητικά των οποίων οι ταυτότητες ζουν στο subjectAltName. Οι αναπτύξεις IKEv2 ταιριάζουν τη διαμορφωμένη ταυτότητα με εγγραφές SAN ή με το διακεκριμένο όνομα, ανάλογα με τον πελάτη, και μια τιμή μπαλαντέρ ή %any απενεργοποιεί ήσυχα τη σύγκριση που νομίζατε ότι είχατε.
Έπειτα έρχονται ο χρόνος και ο σκοπός. Ένας φορητός του οποίου το ρολόι πηγαίνει μερικές ώρες μπροστά απορρίπτει ένα πιστοποιητικό που δεν είναι ακόμη έγκυρο, και ένα ληγμένο ενδιάμεσο πιστοποιητικό αστοχεί τη διαδρομή ενώ το φύλλο είναι έγκυρο. Οι αστοχίες σκοπού προέρχονται από πιστοποιητικό χωρίς serverAuth στην εκτεταμένη χρήση κλειδιού, ή με keyUsage που δεν επιτρέπει την υπογραφή της χειραψίας, το οποίο το OpenSSL αναφέρει ως μη υποστηριζόμενο σκοπό πιστοποιητικού. Επανεκδώστε από το σωστό πρότυπο· τίποτα σε αυτό το μήνυμα δεν είναι λόγος να απενεργοποιήσετε την επαλήθευση.
Η ανάκληση λειτουργεί μόνο αν κάποιος τη διαμόρφωσε
Ένα CRL ή μια απάντηση OCSP δεν συμβουλεύονται αυτόματα. Σε διακομιστή OpenVPN, τα πιστοποιητικά πελάτη ελέγχονται με λίστα μόνο όταν το --crl-verify δείχνει σε μία. Ο έλεγχος του πιστοποιητικού του διακομιστή από την πλευρά του πελάτη εξαρτάται από την υλοποίηση και συχνά απουσιάζει. Το strongSwan χρειάζεται το πρόσθετο ανάκλησης και μια πολιτική πριν κοιτάξει CRL για έναν ομότιμο.
Αυτό εξηγεί το αίτημα υποστήριξης που θα λάβετε τελικά: ένα ανακλημένο πιστοποιητικό πελάτη συνδέεται ακόμη, και όλοι συμπεραίνουν ότι η ανάκληση είναι χαλασμένη. Τίποτα δεν έλεγχε. Δημοσιεύστε και ανανεώστε το CRL, ή κρατήστε τα πιστοποιητικά πελάτη αρκετά βραχύβια ώστε μια παρωχημένη ανάκληση να μετράει για λίγο, και δοκιμάστε τη διαδρομή ανάκλησης σε πιστοποιητικό εργαστηρίου πριν τη χρειαστείτε κατά τη διάρκεια ενός περιστατικού.
Μια σειρά επισκευής που κρατά την επαλήθευση ενεργή
Ταξινομήστε κατά σύμπτωμα πριν αγγίξετε αρχεία, γιατί κάθε γραμμή του πίνακα σας στέλνει σε διαφορετικό αντικείμενο.
| Client says | Most likely gate | First check |
|---|---|---|
| unable to get local issuer certificate | trust anchor or missing intermediate | your own openssl verify against the files the profile loads |
| expired or not yet valid | validity window | leaf and intermediate dates against the device clock |
| unsupported certificate purpose | extended key usage | serverAuth present, keyUsage allows the handshake |
| name mismatch | peer identity | subjectAltName entries versus the profile name |
Περάστε τη λίστα σε ένα πέρασμα: επιβεβαιώστε το αρχείο που φορτώνει το προφίλ, χτίστε τη διαδρομή μόνοι σας, ελέγξτε ότι ο διακομιστής στέλνει το ενδιάμεσο, συγκρίνετε το ρολόι, διαβάστε το SAN, διαβάστε το EKU, και μετά συνδεθείτε ξανά και παρακολουθήστε την ίδια γραμμή καταγραφής να εξαφανίζεται. Αν σε μια συσκευή δεν μπορεί να δοθεί καθόλου CA, το καρφίτσωμα είναι η έντιμη εναλλακτική, αφού το OpenVPN 2.6 δέχεται το --peer-fingerprint και περιορίζει την εμπιστοσύνη σε ένα κλειδί αντί να αφαιρέσει τον έλεγχο. RFC 5280 είναι η αναφορά για το τι σημαίνει καθένα από αυτά τα πεδία.