Halo, Habr! Saya mempersembahkan kepada Anda terjemahan artikel ke-10 "Java Keytool" oleh Jakob Jenkov dari serangkaian artikel untuk pemula yang ingin mempelajari dasar-dasar kriptografi di Jawa.
Daftar isi:
- Kriptografi Jawa
- Java cipher
- Pesan pesan
- Mac
- Tanda tangan
- Keypair
- Keygenerator
- KeyPairGenerator
- Keystore
- Keytool
- Sertifikat
- Pabrik Sertifikat
- CertPath
Java Keytool adalah alat baris perintah yang dapat menghasilkan pasangan kunci publik / kunci privat dan menyimpannya di keystore . File yang dapat dieksekusi utilitas didistribusikan dengan Java SDK (atau JRE), jadi jika Anda telah menginstal SDK, maka itu juga akan diinstal sebelumnya.
Dapat dieksekusi disebut keytool
. Untuk menjalankannya, buka prompt perintah (cmd, konsol, shell, dll.). dan ubah direktori saat ini ke direktori bin
di direktori instalasi Java SDK. Ketikkan keytool
, lalu tekan Enter
. Anda harus melihat sesuatu yang mirip dengan ini:
C:\Program Files\Java\jdk1.8.0_111\bin>keytool Key and Certificate Management Tool Commands: -certreq Generates a certificate request -changealias Changes an entry's alias -delete Deletes an entry -exportcert Exports certificate -genkeypair Generates a key pair -genseckey Generates a secret key -gencert Generates certificate from a certificate request -importcert Imports a certificate or a certificate chain -importpass Imports a password -importkeystore Imports one or all entries from another keystore -keypasswd Changes the key password of an entry -list Lists entries in a keystore -printcert Prints the content of a certificate -printcertreq Prints the content of a certificate request -printcrl Prints the content of a CRL file -storepasswd Changes the store password of a keystore Use "keytool -command_name -help" for usage of command_name C:\Program Files\Java\jdk1.8.0_111\bin>
Seperti yang Anda lihat, utilitas keytool
mendukung serangkaian perintah untuk bekerja dengan kunci, sertifikat, dan penyimpanan kunci. Panduan ini akan mencakup perintah-perintah ini yang paling umum digunakan.
Perintah Keytool
mengambil banyak argumen, instalasi yang sulit untuk diingat. Oleh karena itu, Anda disarankan untuk membuat beberapa skrip CMD atau Shell dengan urutan perintah Keytool
. Script ini memudahkan untuk mengeksekusi ulang perintah dan juga memungkinkan Anda untuk kembali dan melihat bagaimana keystore dibuat.
Generasi pasangan kunci
Membuat pasangan kunci (kunci publik / kunci pribadi) adalah salah satu tugas paling umum yang digunakan utilitas Keytool
. Pasangan kunci yang dihasilkan dimasukkan ke file KeyStore sebagai pasangan kunci yang ditandatangani sendiri. Berikut adalah format baris perintah umum untuk menghasilkan pasangan kunci:
-genkeypair -alias alias -keyalg keyalg -keysize keysize -sigalg sigalg -dname dname -keypass keypass -validity valDays -storetype storetype -keystore keystore -storepass storepass -providerClass provider_class_name -providerArg provider_arg -v -protected -Jjavaoption
Argumen dijelaskan di bagian Argumen Keytool. Tidak semua argumen ini diperlukan dan banyak yang bersifat opsional. Utilitas akan memberi tahu Anda jika Anda melewatkan argumen yang diperlukan. Berikut adalah contoh perintah yang mengimpor sertifikat ke KeyStore . Ingatlah untuk menghapus jeda baris saat memasukkan perintah pada baris perintah.
"C:\\Program Files\Java\jdk1.8.0_111\bin\keytool" -importcert -alias testkey -keypass 123456 -storetype JKS -keystore keystore2.jks -file cert.cert -rfc -storepass abcdef
Daftar Catatan Vault
Untuk mendaftar entri di keystore, Anda dapat menggunakan perintah list
. Di bawah ini adalah format untuk perintah list
. Jeda baris dimaksudkan agar mudah dibaca. Hapus jeda baris sebelum menjalankan perintah:
-list -alias alias -storetype storetype -keystore keystore -storepass storepass -providerName provider_name -providerClass provider_class_name -providerArg provider_arg -v -rfc -protected -Jjavaoption
Ini adalah contoh list
perintah. Ingatlah untuk menghapus jeda baris!
"C:\\Program Files\Java\jdk1.8.0_111\bin\keytool" -list -storetype JKS -keystore keystore.jks -storepass abcdef
Perintah ini akan mendaftar semua entri dalam keystore ini. Outputnya akan terlihat seperti ini:
Keystore type: JKS Keystore provider: SUN Your keystore contains 1 entry testkey, 19-Dec-2017, PrivateKeyEntry, Certificate fingerprint (SHA1): 4F:4C:E2:C5:DA:36:E6:A9:93:6F:10:36:9E:E5:E8:5A:6E:F2:11:16
Jika Anda memasukkan argumen alias
dalam perintah list
, hanya entri yang cocok dengan alias yang diberikan akan dicantumkan. Berikut ini adalah contoh list
perintah dengan argumen alias
:
"C:\\Program Files\Java\jdk1.8.0_111\bin\keytool" -list -alias testkey -storetype JKS -keystore keystore.jks -storepass abcdef
Hasil dari perintah di atas:
testkey, 15-Dec-2017, PrivateKeyEntry, Certificate fingerprint (SHA1): 71:B0:6E:F1:E9:5A:E7:F5:5E:78:71:DC:08:80:47:E9:5F:F8:6D:25
Hapus entri keystore
Juga di utilitas keytool
ada perintah yang dapat menghapus entri dari keystore: delete
. Berikut format perintah ini:
-delete -alias alias -storetype storetype -keystore keystore -storepass storepass -providerName provider_name -providerClass provider_class_name -providerArg provider_arg -v -protected -Jjavaoption
Berikut adalah contoh panggilan delete
. Ingatlah untuk menghapus jeda baris sebelum memulai!
"C:\\Program Files\Java\jdk1.8.0_111\bin\keytool" -delete -alias testkey -storetype JKS -keystore keystore.jks -storepass abcdef
Perintah ini menghapus entri repositori dengan alias testkey
disimpan dalam file keystore.jks
.
Pembuatan Permintaan Sertifikat
Utilitas keytool
dapat menghasilkan permintaan sertifikat menggunakan certreq
. Permintaan sertifikat adalah permintaan kepada otoritas sertifikasi (CA) untuk membuat sertifikat publik untuk organisasi Anda. Setelah membuat permintaan sertifikat, itu harus dikirim ke otoritas sertifikat tempat Anda ingin membuat sertifikat (misalnya, Verisign, Thawte, atau otoritas sertifikat lainnya). Sebelum Anda dapat membuat permintaan sertifikat untuk kunci pribadi dan sepasang kunci publik, Anda harus membuat kunci pribadi ini dan sepasang kunci publik di penyimpanan kunci (atau mengimpornya). Cara melakukan ini dapat ditemukan di bab yang sesuai. Berikut adalah format perintah untuk membuat permintaan sertifikat. Ingatlah untuk menghapus semua jeda baris saat menggunakan perintah ini:
-certreq -alias alias -sigalg sigalg -file certreq_file -keypass keypass -storetype storetype -keystore keystore -storepass storepass -providerName provider_name -providerClass provider_class_name -providerArg provider_arg -v -protected -Jjavaoption
Ini adalah contoh dari -certreq
:
"C:\\Program Files\Java\jdk1.8.0_111\bin\keytool" -certreq -alias testkey -keypass 123456 -storetype JKS -keystore keystore.jks -storepass abcdef -file certreq.certreq
Perintah ini akan menghasilkan permintaan sertifikat untuk kunci yang disimpan dengan alias testkey
di file keystore.jks
dan menulis permintaan sertifikat ke file bernama certreq.certreq
.
Berikut ini adalah daftar argumen yang keytool
berbagai perintah keytool
. Ingatlah bahwa tidak semua tim menerima semua argumen ini. Lihatlah perintah tertentu untuk melihat argumen apa yang diperlukan.
-alias
alias entri -alias
. Ingat alias
hanya dapat menunjuk ke satu kunci.-keyalg
Nama algoritma yang digunakan untuk menghasilkan kunci. RSA biasa digunakan.-keysize
Ukuran kunci dalam bit. Biasanya, ukuran kunci banyak. Selain itu, berbagai algoritma hanya dapat mendukung ukuran kunci tertentu yang telah ditentukan.-sigalg
Algoritme tanda tangan yang digunakan untuk menandatangani pasangan kunci.-dname
Nama unik dari standar X.500. Nama ini akan dikaitkan dengan
alias untuk pasangan kunci ini di keystore, juga
digunakan sebagai bidang "penerbit" dan "subjek" dalam ditandatangani sendiri
sertifikat.-keypass
Kata sandi pasangan kunci diperlukan untuk
akses ke pasangan kunci khusus ini di dalam keystore.-validity
Jumlah hari selama sertifikat
dilampirkan ke pasangan kunci harus valid.-storetype
Format file di mana keystore harus disimpan. Standarnya adalah JKS. Pilihan lain adalah format PKCS11.-keystore
Nama file repositori untuk menyimpan pasangan yang dihasilkan
kunci. Jika file tidak ada, itu akan dibuat.-file
Nama file untuk membaca atau menulis sertifikat atau meminta sertifikat.- Password
-storepass
dari keystore, kepada siapa saja yang ingin bekerja
dengan itu, Anda memerlukan kata sandi ini. Perbedaan antara storepass
dan keypass
di
bahwa yang pertama menyediakan akses ke repositori, dan yang kedua ke yang terpisah
sepasang kunci. Anda akan memerlukan kedua kata sandi untuk mengakses kunci apa saja,
disimpan dalam penyimpanan. -rfc
Jika Anda mengaktifkan flag ini, utilitas akan menggunakan format teks daripada format biner, misalnya, untuk mengekspor atau mengimpor sertifikat. Nilai -Rfc
mengacu pada RFC 1421.-providerName
Nama penyedia API kriptografis yang ingin Anda gunakan saat membuat pasangan kunci. Nama penyedia harus ditentukan dalam file properti keamanan Java.-providerClass
Nama kelas root dari penyedia API kriptografi yang ingin Anda gunakan. Digunakan ketika nama penyedia tidak ditentukan dalam file properti keamanan Java.-providerArg
Argumen diteruskan ke penyedia kriptografi sendiri selama inisialisasi (jika perlu oleh penyedia).-v
Pendek untuk verbose, Keytool akan mencetak banyak informasi tambahan ke baris perintah dalam format yang dapat dibaca.-protected
Menentukan apakah kata sandi keystore harus disediakan oleh beberapa mekanisme eksternal, misalnya, token perangkat keras. Nilai yang valid adalah benar dan salah.-Jjavaoption
Opsi string untuk Java VM yang menghasilkan pasangan kunci dan membuat penyimpanan.