Kriptografi di Jawa. Utilitas Keytool

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:


  1. Kriptografi Jawa
  2. Java cipher
  3. Pesan pesan
  4. Mac
  5. Tanda tangan
  6. Keypair
  7. Keygenerator
  8. KeyPairGenerator
  9. Keystore
  10. Keytool
  11. Sertifikat
  12. Pabrik Sertifikat
  13. CertPath

Utilitas Keytool


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.


Script Keytool


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 .


Argumen utilitas Keytool


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.

Source: https://habr.com/ru/post/id446322/


All Articles