Η εισαγωγή αποτυγχάνει με σφάλμα πιστοποιητικού, οπότε η προφανής κίνηση μοιάζει με μετατροπή. Αυτό το ένστικτο οδηγεί τους ανθρώπους σε ένα μονοπάτι όπου η επέκταση του αρχείου αλλάζει και η απόρριψη μένει ακριβώς η ίδια. Μια γραμμή ssh-ed25519 στο authorized_keys και ένα πιστοποιητικό πελάτη OpenVPN είναι ξεχωριστά αντικείμενα διαπιστευτηρίων, με διαφορετικούς εκδότες, διαφορετικές κωδικοποιήσεις και διαφορετικές διαδρομές ανάκλησης. Αν περάσετε αυτούς τους ελέγχους με τη σειρά, θα ξέρετε μέσα σε ένα λεπτό αν η μετατροπή μπορεί να βοηθήσει καθόλου.

Ποιο αντικείμενο κρατάτε στην πραγματικότητα;

Υπάρχουν πέντε πράγματα που ο κόσμος τα λέει κλειδιά, και μόνο ένα από αυτά είναι αυτό που θέλει ένα προφίλ TLS. Ένα δημόσιο κλειδί SSH είναι μία γραμμή κειμένου με πρόθεμα τύπου και φορτίο base64. Ένα πιστοποιητικό OpenSSH είναι αυτό το κλειδί συν μια υπογραφή, principals και επιλογές, που παράγει το ssh-keygen όταν λειτουργεί ως δική του μικρή CA. Ένα πιστοποιητικό X.509 είναι εντελώς διαφορετική δομή: φέρει υποκείμενο, παράθυρο εγκυρότητας, επεκτάσεις και υπογραφή από αρχή πιστοποιητικών. Ένα ιδιωτικό κλειδί είναι το μυστικό μισό, και ένα εκδοθέν πακέτο είναι συνήθως πιστοποιητικό συν την αλυσίδα του συν το ιδιωτικό κλειδί σε ένα αρχείο.

Ο πρώτος έλεγχος κοστίζει μία εντολή. Στρέψτε το openssl στο αρχείο και ζητήστε του να αναλύσει τη δομή του πιστοποιητικού:

openssl x509 -in client.crt -noout -subject -issuer

Αν αυτό αποτύχει με σφάλμα αδυναμίας φόρτωσης ή σφάλμα PEM, το αρχείο δεν είναι πιστοποιητικό X.509 ό,τι όνομα κι αν του δώσατε. Μια μετονομασία δεν ξαναγράφει το ASN.1 στο εσωτερικό, ούτε το κάνει το τύλιγμα μιας γραμμής δημόσιου κλειδιού σε κείμενο κεφαλίδας PEM.

Ζητά καθόλου το προφίλ πιστοποιητικό;

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

Οι παλαιότερες ρυθμίσεις στατικού κλειδιού είναι μια τρίτη περίπτωση. Προηγούνται της χειραψίας TLS και περιμένουν αρχείο προ-κοινόχρηστου μυστικού, γι’ αυτό ούτε η επικόλληση δημόσιου κλειδιού σε αυτό το πεδίο μπορεί να δουλέψει. Διαβάστε τι ζητά πραγματικά το προφίλ πριν αποφασίσετε ότι το διαπιστευτήριο είναι λάθος.

Τι μπορεί και τι δεν μπορεί να κάνει η επανακωδικοποίηση

Τα ιδιωτικά κλειδιά έχουν νόμιμα εναλλακτικά δοχεία. Το ίδιο κλειδί RSA ή EC μπορεί να γραφτεί ως παραδοσιακό PEM, ως PKCS#8 ή μέσα σε πακέτο PKCS#12, και τα εργαλεία μετατρέπουν ευχαρίστως μεταξύ τους. Τα δημόσια κλειδιά έχουν παρόμοια ιστορία: το ssh-keygen μπορεί να βγάλει τη μορφή RFC 4716 ενός κλειδιού SSH, και το OpenSSH καταλαβαίνει και τη δική του μορφή πιστοποιητικού. Όλα αυτά είναι αναπαράσταση, και η αναπαράσταση δεν είναι εμπιστοσύνη.

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

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

Πού μπαίνει στο κάδρο η αρχή πιστοποιητικών

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

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

Τι σας κοστίζει η επαναχρησιμοποίηση του κλειδιού SSH

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

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

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