Το φύλλο πιστοποιητικού έγκυρο, η αλυσίδα έληξε: διαβάστε το βάθος
Ένα σφάλμα λήξης μπορεί να ανήκει σε εκδότη, όχι στο φύλλο. Διαβάστε το βάθος επαλήθευσης και τις εισόδους εμπιστοσύνης πριν ανανεώσετε ένα πιστοποιητικό που φαίνεται ακόμη επίκαιρο.
Ελέγχετε το πιστοποιητικό του διακομιστή, βλέπετε μήνες να απομένουν στο ρολόι, και ο πελάτης εξακολουθεί να απορρίπτει τη σύνδεση με μήνυμα λήξης. Η ημερομηνία που διαβάζετε ανήκει στο φύλλο, και το παράπονο μπορεί να αφορά κάτι βαθύτερο στη διαδρομή. Η επαλήθευση διασχίζει μια αλυσίδα, και οποιοδήποτε πιστοποιητικό επιλέξει αυτή η διαδρομή μπορεί να αποτύχει στο δικό του παράθυρο εγκυρότητας. Διαβάστε ποιο απέτυχε πριν ανανεώσετε οτιδήποτε.
Το βάθος ονομάζει το πιστοποιητικό που απέτυχε
Στη διαγνωστική του OpenSSL, το βάθος 0 είναι το πιστοποιητικό-στόχος και το βάθος 1 είναι ο εκδότης που το υπέγραψε, με μεγαλύτερους αριθμούς να συνεχίζουν προς την άγκυρα εμπιστοσύνης. Μια λήξη που αναφέρεται στο βάθος 1 δεν αντικρούεται από ένα τρέχον notAfter στο φύλλο, οπότε ο επανέλεγχος του ορατού πιστοποιητικού δεν θα εξηγήσει ποτέ το σφάλμα.
Καταγράψτε το αποτύπωμα του αποτυχημένου πιστοποιητικού μαζί με το subject του, γιατί διαφορετικά πιστοποιητικά μπορούν να φέρουν το ίδιο όνομα CA. Η διασταυρούμενη υπογραφή δημιουργεί ακριβώς αυτή την κατάσταση: η ίδια αρχή εμφανίζεται περισσότερες από μία φορές, με διαφορετικές ημερομηνίες εγκυρότητας, και ο επαληθευτής επέλεξε αυτή που δεν περιμένατε. Μια γνώριμη ετικέτα δεν είναι αναγνωριστικό, και ένα αποτύπωμα είναι αυτό που ξεχωρίζει δύο αντικείμενα που μοιράζονται όνομα.
Προσέξτε επίσης προϊόντα με περισσότερους από έναν ρόλους πιστοποιητικού. Στο OpenVPN Access Server, τα πιστοποιητικά που προστατεύουν τις διεπαφές ιστού είναι ξεχωριστά από εκείνα για συνδέσεις VPN, οπότε ένα πρόγραμμα περιήγησης που ανοίγει τη σελίδα διαχείρισης δεν αποδεικνύει τίποτα για τη διαδρομή της σήραγγας.
Οι είσοδοι εμπιστοσύνης δεν είναι το ίδιο με τους υποψηφίους αλυσίδας
Δώστε στον επαληθευτή τις δύο εισόδους χωριστά και ρητά. Το αρχείο εμπιστοσύνης κρατά τις άγκυρες που δέχεστε· το μη αξιόπιστο πακέτο κρατά ενδιάμεσα πιστοποιητικά που προσφέρονται για την κατασκευή της διαδρομής. Το να τα ανακατεύετε είναι ο τρόπος που οι άνθρωποι προάγουν κατά λάθος ένα ενδιάμεσο σε ρίζα και μετά αναρωτιούνται γιατί το ίδιο σφάλμα τους ακολουθεί μεταξύ μηχανημάτων.
$ openssl verify -verbose -show_chain -purpose sslserver \
-CAfile trusted-roots.pem -no-CApath -no-CAstore \
-untrusted intermediates.pem server.pem
Η απενεργοποίηση της προεπιλεγμένης διαδρομής και του χώρου αποθήκευσης με -no-CApath -no-CAstore κρατά τη δοκιμή έντιμη: το αποτέλεσμα εξαρτάται τότε από τα αρχεία που ονομάσατε, όχι από ό,τι τυχαίνει να εμπιστεύεται ο σταθμός εργασίας. Η αναφορά επαλήθευσης του OpenSSL τεκμηριώνει αυτές τις επιλογές και τη διαγνωστική που παράγουν.
-show_chain εκτυπώνει την κατασκευασμένη αλυσίδα όταν η επαλήθευση πετύχει, κάτι χρήσιμο για να επιβεβαιώσετε ότι η διαδρομή είναι αυτή που σκοπεύατε. Όταν αποτυγχάνει, κρατήστε το αναφερόμενο βάθος και subject· αυτά τα δύο πεδία λένε στον επόμενο αναγνώστη ποιο πιστοποιητικό να επιθεωρήσει.
Αυτό που δεν κάνει είναι να αναπαράγει την πολιτική κάθε πελάτη. Ένα pin, ένας περιορισμός σκοπού ή ένας έλεγχος ταυτότητας ειδικός για τον πελάτη ζει στον πελάτη, όχι σε αυτή την εντολή. Αυτές είναι οι ρυθμίσεις που πρέπει να ελέγξετε όταν η επαλήθευση περνά στον διακομιστή και η σύνδεση εξακολουθεί να αποτυγχάνει. Κρατήστε τις δύο διαγνώσεις χωριστά, αλλιώς θα ανανεώσετε ένα υγιές πιστοποιητικό κυνηγώντας ένα σφάλμα καρφιτσώματος.
Τι αποδεικνύει ο έλεγχος και τι αφήνει έξω
Αυτός είναι ένας έλεγχος διαδρομής και σκοπού απέναντι σε ένα αρχείο εμπιστοσύνης που δώσατε εσείς. Για έλεγχο ονόματος HTTPS, προσθέστε το αναμενόμενο όνομα κεντρικού υπολογιστή μέσω της κατάλληλης επιλογής· για σύνδεση VPN, κρατήστε τους ρυθμισμένους ελέγχους ταυτότητας του πελάτη και χρησιμοποιήστε το υλικό εμπιστοσύνης που διαβάζει πραγματικά αυτός ο πελάτης.
Αυτό που στέλνει ένας διακομιστής είναι ένα σύνολο υποψηφίων, όχι η διαδρομή που θα κατασκευάσει τελικά ο πελάτης σας. Η τοπική εμπιστοσύνη και οι κανόνες κατασκευής της βιβλιοθήκης διαμορφώνουν και τα δύο το αποτέλεσμα, γι' αυτό η ίδια απάντηση μπορεί να επαληθεύεται σε ένα μηχάνημα και να αποτυγχάνει σε άλλο. Συγκρίνετε τον συντηρούμενο χώρο εμπιστοσύνης και την υλοποίηση TLS του πελάτη που αποτυγχάνει με εκείνα ενός πελάτη που λειτουργεί, πριν υποθέσετε ταυτόσημη αξιολόγηση. Μια διαφορά εκεί εξηγεί πολλές αναφορές «μόνο αυτό το φορητό αποτυγχάνει».
Για να δείτε το παράθυρο κάθε πιστοποιητικού αντί για ένα τη φορά, εκτυπώστε τα ως σύνολο:
$ openssl x509 -in server.pem -noout -subject -dates
$ openssl crl2pkcs7 -nocrl -certfile intermediates.pem \
| openssl pkcs7 -print_certs -noout
Η δεύτερη εντολή απαριθμεί subjects και εκδότες χωρίς να αποκωδικοποιεί κάθε αρχείο με το χέρι, κι έτσι εντοπίζετε ένα ενδιάμεσο του οποίου η ημερομηνία έχει περάσει ενώ το φύλλο φαίνεται ακόμη εντάξει.
Επιδιορθώστε τη διαδρομή χωρίς να αποδυναμώσετε την επαλήθευση
Όταν παρέχεται ένα ληγμένο ενδιάμεσο ή ένα παρωχημένο διασταυρούμενα υπογεγραμμένο πιστοποιητικό, αποκτήστε την τρέχουσα υποστηριζόμενη αλυσίδα του εκδότη και αναπτύξτε την μέσω της τεκμηριωμένης ροής πιστοποιητικών της υπηρεσίας. Όταν ο πελάτης λείπει την προβλεπόμενη συντηρούμενη άγκυρα, ενημερώστε τη διαχειριζόμενη διαμόρφωση εμπιστοσύνης ή το λογισμικό του πελάτη. Αντισταθείτε στη συντόμευση να χαρακτηρίσετε κάθε πιστοποιητικό στο πακέτο ως ρίζα μόνο για να φιμώσετε το μήνυμα.
Ο χειρισμός της ρίζας αξίζει μια σημείωση, γιατί οι περιλήψεις συχνά τον υπερβάλλουν. Το RFC 5280 αντιμετωπίζει την άγκυρα ως είσοδο που βρίσκεται εκτός της υποψήφιας διαδρομής, ενώ το OpenSSL τεκμηριώνει ελέγχους εγκυρότητας που περιλαμβάνουν το πιστοποιητικό CA ρίζας του. Και οι δύο δηλώσεις ισχύουν για τα δικά τους συστήματα· η γενίκευση της συμπεριφοράς λήξης ρίζας μιας βιβλιοθήκης σε κάθε πελάτη παράγει σίγουρες λανθασμένες απαντήσεις.
Μετά την αλλαγή, επιβάλετε νέα αυθεντικοποίηση στον επηρεαζόμενο πελάτη και επιβεβαιώστε ότι το συγκεκριμένο μήνυμα λήξης έχει φύγει. Ανανεώστε το φύλλο μόνο αν το ίδιο το φύλλο είναι ακατάλληλο. Η απενεργοποίηση των ελέγχων χρόνου ή η επαναφορά ενός ιστορικού διασταυρούμενου πιστοποιητικού δεν παράγει έγκυρη τρέχουσα διαδρομή· απλώς αναβάλλει την επόμενη αποτυχία.