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

Τι συμβαίνει ανάμεσα στον διάλογο και τη λίστα πιστοποιητικών

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

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

Η δεύτερη περίπτωση είναι συνηθισμένη στα σημερινά συστήματα επειδή το OpenSSL 3 μετέφερε μια ομάδα παλιών αλγορίθμων σε προαιρετικό πάροχο legacy. Τα πακέτα που εξάγει το OpenSSL 1.x συνήθως σφράγιζαν τα πιστοποιητικά με RC2 40 bit και το ιδιωτικό κλειδί με Triple DES τριών κλειδιών. Μια προεπιλεγμένη έκδοση του OpenSSL 3 εξακολουθεί να επαληθεύει τον MAC με τον σωστό κωδικό σας και μετά αποτυγχάνει στο σακίδιο, άρα ο κωδικός δεν ήταν ποτέ λάθος και η εκ νέου πληκτρολόγησή του δεν αλλάζει τίποτα.

Διαβάστε το δοχείο χωρίς να γράψετε κλειδί έξω

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

openssl pkcs12 -in vpn-identity.p12 -info -noout

Σε παλιό πακέτο με τον σωστό κωδικό, αυτό εκτυπώνει τα χαρακτηριστικά του σακιδίου και μετά σταματά με digital envelope routines::unsupported. Με λάθος κωδικό παίρνετε Mac verify error: invalid password? πριν διαβαστεί οποιοδήποτε σακίδιο. Τα δύο μηνύματα δείχνουν σε αντίθετες κατευθύνσεις, και αυτή είναι ακριβώς η πληροφορία που απέκρυψε ο πελάτης.

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

Ποιο σφάλμα σημαίνει ποιο στάδιο

Ένας σύντομος πίνακας κρατά τα τρία αποτελέσματα χωριστά, και η διατύπωση μετράει περισσότερο από το πού εμφανίστηκε ο διάλογος.

Text you seeStageWhat it tells you
Mac verify error: invalid password?Integrity checkPassphrase or cached credential, not the cipher
digital envelope routines::unsupportedBag decryptAlgorithm missing from the default provider
not enough data / header too longContainer formatWrong encoding, edited file, or truncated download

Κείμενο όπως not enough data ή header too long δεν ανήκει σε καμία από τις δύο πρώτες ομάδες. Είναι πρόβλημα μορφής: αρχείο DER μετονομασμένο σε .pem, αντίγραφο που αλλοιώθηκε από επεξεργαστή που ξανάγραψε τις αλλαγές γραμμής, ή ημιτελής λήψη. Συγκρίνετε το άθροισμα ελέγχου με αυτό που έστειλε ο εκδότης πριν αρχίσετε να κοιτάτε κρυπτοσυστήματα.

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

Φτιάξτε ένα πακέτο που ο πελάτης μπορεί πραγματικά να ανοίξει

Μόλις ο αναλυτής legacy επιβεβαιώσει ότι το αρχείο είναι εντάξει, η μόνιμη λύση είναι αντικατάσταση της οποίας τους αλγόριθμους υποστηρίζει ο πελάτης-στόχος: AES-256-CBC για τα σακίδια κλειδιού και πιστοποιητικών, PBKDF2 με SHA-256 για την παραγωγή και SHA-256 για τον MAC. Ο διαχειριστής PKI σας μπορεί να το εξάγει από το ίδιο υλικό κλειδιού, και το πιστοποιητικό μέσα παραμένει αυτό που οι διακομιστές σας εμπιστεύονται ήδη.

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

openssl pkcs12 -in vpn-identity.p12 -out vpn-identity-aes.p12 \
  -keypbe AES-256-CBC -certpbe AES-256-CBC -macalg sha256 \
  -passin file:old.pass -passout file:new.pass

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

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

Επιβεβαιώστε ότι ο πελάτης εισήγαγε το αρχείο που φτιάξατε

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

Εκτυπώστε την ταυτότητα που πρόκειται να εισαγάγετε και συγκρίνετε την με αυτό που δείχνει ο πελάτης στην προβολή πιστοποιητικών του.

openssl pkcs12 -in vpn-identity-aes.p12 -clcerts -nokeys -passin file:new.pass \
  | openssl x509 -noout -subject -dates -fingerprint -sha256

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

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

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