Το Keytool είναι ένα βοηθητικό πρόγραμμα γραμμής εντολών που σας επιτρέπει να διαχειρίζεστε/αποθηκεύετε κρυπτογραφικά κλειδιά και πιστοποιητικά.
Εάν το σύστημά σας έχει εγκαταστήσει Java, μπορείτε να χρησιμοποιήσετε την εντολή keytool για να εισαγάγετε ένα πιστοποιητικό CA, να καταχωρίσετε πιστοποιητικά, να δημιουργήσετε αυτο-υπογεγραμμένα πιστοποιητικά, να αποθηκεύσετε φράσεις πρόσβασης και δημόσια/ιδιωτικά κλειδιά και να κάνετε πολλά άλλα πράγματα.
Ταραγμένος? Μην ανησυχείτε. Θα το εξηγήσω με πιο απλά λόγια καθώς διαβάζετε.
Σημειώστε ότι χρησιμοποιώ το Linux για να δοκιμάσω τις εντολές και να σας εξηγήσω λίγο περισσότερα σχετικά με αυτό με παραδείγματα.
Μπορείτε να χρησιμοποιήσετε εντολές Keytool και σε Windows και macOS.
Πίνακας περιεχομένων
Τι είναι η εντολή Keytool;
Είναι ένα βοηθητικό πρόγραμμα διαχείρισης κλειδιών και πιστοποιητικών. Σας επιτρέπει να αποθηκεύετε ζεύγη ιδιωτικών/δημόσιων κλειδιών, τα οποία είναι συνήθως για την επαλήθευση/επαλήθευση της πρόσβασης στις υπηρεσίες.
Λαμβάνοντας υπόψη τον τίτλο αυτού του άρθρου, μπορεί κανείς να υποθέσει ότι η εντολή χρησιμοποιείται κυρίως από διαχειριστές συστήματος και προγραμματιστές.
Ως επί το πλείστον, ναι, αλλά ένας χρήστης μπορεί να γίνει δημιουργικός με την εντολή keytool για να αποθηκεύει φράσεις πρόσβασης και μυστικά κλειδιά για σκοπούς ελέγχου ταυτότητας, κρυπτογράφησης και αποκρυπτογράφησης. Επομένως, εάν είστε περίεργοι, θα πρέπει να το δοκιμάσετε στο σύστημά σας.
Εάν είστε νέοι στην έννοια των κρυπτογραφικών κλειδιών, ίσως θέλετε να ανατρέξετε στο άρθρο μας για την κρυπτογράφηση δεδομένων προτού δοκιμάσετε τις εντολές του keytool.
Επιπλέον, η εξέταση των παραδειγμάτων εντολών OpenSSL μπορεί επίσης να σας δώσει κάποια ιδέα για το πώς είναι διαφορετικό και τι μπορείτε να κάνετε με οποιοδήποτε από αυτά.
Δημιουργήστε ένα αυτο-υπογεγραμμένο πιστοποιητικό
keytool -genkeypair -alias <alias> -keypass <keypass> -validity <validity> -storepass <storepass>
Σε αντίθεση με ένα πιστοποιητικό SSL που αγοράζετε, ένα πιστοποιητικό αυτο-υπογεγραμμένο χρησιμοποιείται μόνο για σκοπούς ανάπτυξης/δοκιμών για χρήση ασφαλούς σύνδεσης.
Μπορείτε να δημιουργήσετε ένα χρησιμοποιώντας τη σύνταξη εντολών keytool που αναφέρεται παραπάνω. Για παράδειγμα, δείτε πώς φαίνεται:
keytool -genkeypair -alias grtechpc.org -keypass passforkeystore -validity 365 -storepass passforkeystore
Μπορείτε να χρησιμοποιήσετε οποιοδήποτε όνομα για το ψευδώνυμο. Χρησιμοποιώ το grtechpc.org ως κείμενο κράτησης θέσης. Μπορείτε να προσαρμόσετε την εγκυρότητα και να καθορίσετε έναν κωδικό πρόσβασης για το Keystore αντικαθιστώντας το “passforkeystore” στην παραπάνω εντολή.
Σημειώστε ότι μόνο ένας κωδικός πρόσβασης υποστηρίζεται για τα KeyStores PKCS12. Ωστόσο, είναι ένας βολικός τύπος Keystore που δεν είναι συγκεκριμένος για Java.
Εάν χρειάζεστε δύο διαφορετικούς κωδικούς πρόσβασης για το Keystore και το πιστοποιητικό σας, ίσως θέλετε να πείτε ρητά στην εντολή keytool να χρησιμοποιήσει άλλη διεπαφή.
Μπορείτε να διαβάσετε περισσότερα για αυτό στην επίσημη τεκμηρίωσή του.
Μόλις προχωρήσετε στη δημιουργία, θα ζητήσει πρόσθετες λεπτομέρειες για την αυθεντικότητα. Δείτε πώς πρέπει να μοιάζει:
What is your first and last name? [Unknown]: Ankush What is the name of your organizational unit? [Unknown]: grtechpc.org What is the name of your organization? [Unknown]: grtechpc.org What is the name of your City or Locality? [Unknown]: Bhubaneswar What is the name of your State or Province? [Unknown]: Odisha What is the two-letter country code for this unit? [Unknown]: 91 Is CN=Ankush, OU=grtechpc.org, O=grtechpc.org, L=Bhubaneswar, ST=Odisha, C=91 correct? [no]: yes
Δημιουργήστε ένα Java Keystore και ένα ζεύγος κλειδιών
keytool -genkeypair -keyalg RSA -keysize 2048 -keystore keystore.jks -alias geekflarejava -validity 3650
Δημιουργήστε ένα Java Keystore και εισαγάγετε ένα πιστοποιητικό
Βεβαιωθείτε ότι έχετε ένα έγκυρο πιστοποιητικό ή έχετε δημιουργήσει ένα νωρίτερα. Μόλις ολοκληρωθεί, μπορείτε να το εισαγάγετε και να δημιουργήσετε ένα Java Keystore.
keytool -importcert -file test.crt -keystore truststore.jks -alias grtechpc.org
Δημιουργήστε ένα ζεύγος κλειδιών στον προεπιλεγμένο χώρο αποθήκευσης κλειδιών με το θέμα
Μπορείτε να δημιουργήσετε γρήγορα ένα ζεύγος κλειδιών (ας πούμε με το όνομα “ca”) χρησιμοποιώντας την ακόλουθη εντολή:
keytool -alias ca -dname CN=CA -genkeypair
Δημιουργήστε μια αλυσίδα υπογεγραμμένων πιστοποιητικών
Ας υποθέσουμε ότι έχετε δημιουργήσει ζεύγη κλειδιών ca, και ca1. Μπορείτε να δημιουργήσετε μια αλυσίδα υπογεγραμμένων πιστοποιητικών όπου το ca θα υπογράψει το ca1 με τις ακόλουθες εντολές:
keytool -alias ca1 -certreq
keytool -alias ca -gencert -ext san=dns:ca1
keytool -alias ca1 -importcert
Μπορείτε να ολοκληρώσετε την αλυσίδα με δύο ακόμη ζεύγη κλειδιών ca1 και ca2, όπου το ca1 θα υπογράψει ca2.
Εισαγωγή Πιστοποιητικού
Εάν θέλετε να εισαγάγετε ένα πιστοποιητικό από ένα διαθέσιμο αρχείο, μπορείτε να κάνετε τα εξής:
keystool -import -alias grtechpc.org -file geekflareserver.cer
Δημιουργήστε ένα αίτημα υπογραφής πιστοποιητικού (CSR) για το υπάρχον Keystore
Λαμβάνοντας υπόψη ότι έχετε ήδη δημιουργήσει ένα Keystore, μπορείτε να δημιουργήσετε ένα CSR.
keytool -certreq -keyalg rsa -keystore keystore.jks -alias server -file grtechpc.org.csr
Λίστα πιστοποιητικών που είναι αποθηκευμένα στο Java Keystore
Ένας χώρος αποθήκευσης κλειδιών μπορεί να έχει πολλαπλές καταχωρήσεις πιστοποιητικών. Υποθέτοντας ότι ελέγχουμε τη λίστα των πιστοποιητικών στη βάση δεδομένων “keystore.jks”, ορίστε τι πρέπει να πληκτρολογήσουμε:
keytool -v -list -keystore keystore.jks
Η έξοδος για αυτό θα μοιάζει με αυτό:
keytool -v -list -keystore keystore.jks Enter keystore password: Keystore type: PKCS12 Keystore provider: SUN Your keystore contains 2 entries Alias name: geekflarecert Creation date: 16-Nov-2022 Entry type: PrivateKeyEntry Certificate chain length: 1 Certificate[1]: Owner: CN=Ankush, OU=Geek, O=grtechpc.org, L=Bhubaneswar, ST=od, C=91 Issuer: CN=Ankush, OU=Geek, O=grtechpc.org, L=Bhubaneswar, ST=od, C=91 Serial number: a0b9a99 Valid from: Wed Nov 16 09:42:37 IST 2022 until: Sat Nov 13 09:42:37 IST 2032 Certificate fingerprints: SHA1: 23:7C:65:A7:A6:84:18:F8:45:04:92:DF:D4:BB:0F:91:6D:A5:C5:BE SHA256: C0:25:ED:B8:CF:1A:E6:E1:C5:75:A8:10:8F:CD:BE:42:26:96:9C:9A:FA:74:65:07:71:06:9A:2C:F5:80:FE:7F Signature algorithm name: SHA256withRSA Subject Public Key Algorithm: 2048-bit RSA key Version: 3
Ελέγξτε τα περιεχόμενα ενός ενιαίου πιστοποιητικού
Λαμβάνοντας υπόψη ότι έχετε ήδη δημιουργήσει ένα πιστοποιητικό, μπορείτε να ελέγξετε περισσότερα σχετικά με αυτό χρησιμοποιώντας τα ακόλουθα:
keytool -v -printcert -file server.crt
Προβολή πιστοποιητικών σε ένα Java Keystore
Μπορείτε να παραθέσετε όλα τα πιστοποιητικά από μια βάση δεδομένων Keystore. Δείτε πώς φαίνεται η εντολή:
keytool -v -list -keystore keystore.jks
Προβολή Keystore χρησιμοποιώντας ψευδώνυμο και Keystore
Εάν θέλετε να ελέγξετε ένα Keystore χρησιμοποιώντας το ψευδώνυμό του που ορίσατε κατά τη δημιουργία του, πληκτρολογήστε τα εξής:
keytool -v -list -keystore keystore.jks -alias geekflareserver
Λίστα πιστοποιητικών στο KeyStore
Εάν θέλετε να ελέγξετε τα πιστοποιητικά που είναι αποθηκευμένα στο προεπιλεγμένο Keystore, χρησιμοποιήστε την εντολή:
keytool -list -storepass passforkeystore
Πρέπει να αντικαταστήσετε το “passforkeystore” με τον κωδικό πρόσβασης που έχετε ορίσει.
Προβολή πληροφοριών πιστοποιητικού
Εάν πρέπει να ελέγξετε τις λεπτομέρειες για ένα μεμονωμένο πιστοποιητικό, μπορείτε να χρησιμοποιήσετε το ψευδώνυμό του χωρίς να καθορίσετε τη βάση δεδομένων keystone.
Δείτε πώς φαίνεται:
keytool -list -v -alias grtechpc.org -storepass passforkeystore
Προβολή Πιστοποιητικού σε Μορφή PEM
Το PEM είναι μια από τις πιο κοινές μορφές για πιστοποιητικά και κρυπτογραφικά κλειδιά. Εάν θέλετε να ελέγξετε ένα πιστοποιητικό με το PEM, πληκτρολογήστε τα εξής:
keytool -v -printcert -file grtechpc.org.crt -rfc
Αλλάξτε έναν κωδικό πρόσβασης Java Keystore
Εάν έχετε ήδη δημιουργήσει έναν κωδικό πρόσβασης για το Java Keystore, μπορείτε να αλλάξετε τον κωδικό πρόσβασης χρησιμοποιώντας την εντολή:
keytool -delete -alias grtechpc.org -keystore keystore.jks
Διαγράψτε ένα Πιστοποιητικό από το Java Keystore
Μπορείτε να καθορίσετε το Java Keystore και το ψευδώνυμό του για να το διαγράψετε. Για παράδειγμα:
keytool -delete -alias grtechpc.org -keystore keystore.jks
Εξερευνήστε την εντολή και λάβετε βοήθεια
Η εντολή έχει πολλά ορίσματα και επεκτάσεις για να γίνουν πολλά πράγματα. Ανάλογα με την περίπτωση χρήσης σας, μπορεί να χρειαστεί ή να μην χρειαστεί να τα χρησιμοποιήσετε όλα.
Έτσι, εάν θέλετε να βουτήξετε βαθιά για τις επιλογές εντολών, μπορείτε πάντα να πληκτρολογήσετε:
keytool -help
Σε κάθε περίπτωση, εάν χρησιμοποιείτε τερματικό Linux, θα συνιστούσα να διαβάσετε τη σελίδα man (εγχειρίδιο) με αυτήν την εντολή:
man keytool
Με την εντολή man, μπορείτε να λάβετε όλες τις λεπτομέρειες που χρειάζεστε σχετικά με την εντολή keytool.
Οπότε, κρατήστε την υπερδύναμή σας για να μάθετε ό,τι μπορείτε για αυτό!
Τυλίγοντας
Η διαδρομή των αρχείων και άλλων επιλογών προσαρμογής μπορεί να είναι λίγο διαφορετική από την πλατφόρμα που χρησιμοποιείτε. Μπορείτε επίσης να ανατρέξετε στην τεκμηρίωση της Oracle για τις τυποποιημένες επιλογές.
Το Keytool είναι ένα εξαιρετικό εργαλείο για μια σειρά εργασιών. Δοκιμάστε το και δείτε τι μπορείτε να κάνετε με αυτό!
Μπορείτε επίσης να εξερευνήσετε ορισμένες εντολές Linux για να διατηρήσετε και να διατηρήσετε τη βέλτιστη λειτουργία των συστημάτων.