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

Επιβεβαιώστε ότι το κλειδί είναι RSA πριν ψάξετε για πρώτους αριθμούς

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

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

openssl version
openssl x509 -in vpn-client.crt -noout -text
openssl pkey -in vpn-client.key -noout -text

Η έκδοση έχει σημασία γιατί τα ονόματα επιλογών μετακινήθηκαν μεταξύ κύριων εκδόσεων. Στην έξοδο του πιστοποιητικού, βρείτε τη γραμμή του αλγορίθμου δημόσιου κλειδιού και το μέγεθος κλειδιού· στην έξοδο του κλειδιού, ένα κλειδί RSA εκτυπώνει ένα μέτρο και έναν δημόσιο εκθέτη. Ένα κλειδί ελλειπτικής καμπύλης εκτυπώνει αντ’ αυτού μια ονομασμένη καμπύλη, και καμία αναζήτηση δεν θα βγάλει από αυτό n ή q.

Διαβάστε τη δομή αντί για το base64

Το PEM είναι base64 τυλιγμένο σε γραμμές κεφαλίδας, και η αποκωδικοποίησή του δίνει DER, δηλαδή μια σειριοποιημένη δομή και όχι έναν τεράστιο ακέραιο. Τα ιδιωτικά κλειδιά RSA ταξιδεύουν σε δύο κοινά δοχεία, PKCS#1 και PKCS#8, και τα δύο καταλήγουν στο ίδιο σύνολο αριθμών.

Στην περίπτωση δύο πρώτων αριθμών, η ιδιωτική δομή φέρει εννέα πεδία: μια έκδοση, το μέτρο n, τον δημόσιο εκθέτη e, τον ιδιωτικό εκθέτη d, τους πρώτους αριθμούς p και q, δύο εκθέτες CRT και έναν συντελεστή CRT. RFC 8017 ενότητα A.1 ορίζει αυτά τα συστατικά και τη διάταξη ASN.1, και επιτρέπει επίσης περισσότερους από δύο πρώτους αριθμούς, γι’ αυτό ένας γενικός αναλυτής μπορεί να εκτυπώσει πρόσθετες εγγραφές πρώτων. Προσέξτε τη σειρά, γιατί εξηγεί ένα συχνό λάθος: το δημόσιο μισό αποθηκεύεται μέσα στο ιδιωτικό αρχείο, άρα η παρουσία ενός δημόσιου πεδίου δεν κάνει εκείνο το αρχείο ασφαλές για κοινή χρήση. Ό,τι ακολουθεί είναι το υλικό που πρέπει να μείνει στον κεντρικό υπολογιστή.

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

Αντιστοιχίστε πιστοποιητικό με κλειδί χωρίς να εκτυπώσετε το κλειδί

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

openssl pkey -in vpn-client.key -pubout -out /tmp/key.pub
openssl x509 -in vpn-client.crt -pubkey -noout > /tmp/cert.pub
cmp /tmp/key.pub /tmp/cert.pub && echo MATCH

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

Μάθετε τι δεν είναι τα γειτονικά αρχεία

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

FileAnswersDoes not prove
vpn-client.keyPossession of the private keyThat the identity is enrolled
vpn-client.crtA signed binding of public key to identityThat the client holds the matching key
vpn-client.csrThe requested binding and public keyThat access was granted
dh2048.pemGroup parameters for key exchangeAny RSA component
crl.pemRevocation status for certificatesAnything about a private key

Δύο από αυτές τις εγγραφές μπερδεύονται με παραμέτρους RSA αρκετά συχνά ώστε να τις ονομάσουμε δύο φορές. Ένα αρχείο παραμέτρων Diffie-Hellman περιέχει παραμέτρους ομάδας για την εγκαθίδρυση κλειδιού και κανέναν πρώτο αριθμό RSA, αν και εκτυπώνεται επίσης ως μεγάλος πρώτος. Μια λίστα ανάκλησης δημοσιεύει την κατάσταση πιστοποιητικών και δεν είναι μέρος όπου θα μπορούσε να κρυφτεί ένας ιδιωτικός εκθέτης.

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

Καταγράψτε το ζεύγος και μετά επαληθεύστε τη χειραψία

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

openssl verify -CAfile ca.crt vpn-client.crt
openssl x509 -in vpn-client.crt -noout -subject -issuer -dates

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

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

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