Apa perbedaan antara keystore dan truststore?
Apa perbedaan antara keystore dan truststore?
Jawaban:
Keystore berisi kunci pribadi, dan sertifikat dengan kunci publik yang sesuai.
Toko perwalian berisi sertifikat dari pihak lain yang Anda harapkan untuk berkomunikasi, atau dari Otoritas Sertifikat yang Anda percayai untuk mengidentifikasi pihak lain.
TrustStore
per se . Atau saya tidak dapat menemukannya di java docs (misalnya, java.security.TrustStore
). Saat kami ingin mempercayai Otoritas Sertifikat, sertifikat tersebut dipercaya melalui KeyStore
(dan KeyStore
diteruskan ke TrustManagerFactory
).
Keystore berisi kunci pribadi. Anda hanya memerlukan ini jika Anda adalah server, atau jika server memerlukan otentikasi klien.
Truststore berisi sertifikat CA untuk dipercaya. Jika sertifikat server Anda ditandatangani oleh CA yang diakui, toko kepercayaan default yang dikirimkan bersama JRE akan memercayainya (karena sudah mempercayai CA yang dapat dipercaya), jadi Anda tidak perlu membuat sendiri, atau menambahkan apa pun ke yang dari JRE.
Dalam jabat tangan SSL tujuan trustStore adalah untuk memverifikasi kredensial dan tujuan keyStore adalah untuk memberikan kredensial .
keyStore
keyStore di Java menyimpan kunci pribadi dan sertifikat yang sesuai dengan kunci publik mereka dan mengharuskan jika Anda SSL Server atau SSL memerlukan otentikasi klien.
TrustStore
TrustStore menyimpan sertifikat dari pihak ketiga, aplikasi Java Anda berkomunikasi atau sertifikat yang ditandatangani oleh CA (otoritas sertifikat seperti Verisign, Thawte, Geotrust atau GoDaddy) yang dapat digunakan untuk mengidentifikasi pihak ketiga.
TrustManager
TrustManager menentukan apakah koneksi jarak jauh harus dipercaya atau tidak yaitu apakah pihak jarak jauh adalah pihak yang diklaimnya dan KeyManager memutuskan kredensial otentikasi mana yang harus dikirim ke host jarak jauh untuk otentikasi selama jabat tangan SSL.
Jika Anda seorang Server SSL, Anda akan menggunakan kunci pribadi selama algoritma pertukaran kunci dan mengirim sertifikat yang sesuai dengan kunci publik Anda ke klien, sertifikat ini diperoleh dari keyStore. Di sisi klien SSL, jika ditulis dalam Java, ia akan menggunakan sertifikat yang disimpan di trustStore untuk memverifikasi identitas Server. Sertifikat SSL yang paling sering datang sebagai cer berkas yang ditambahkan ke dalam keystore atau trustStore dengan menggunakan manajemen utilitas kunci misalnya keytool .
Sumber: http://javarevisited.blogspot.ch
Anda mungkin juga tertarik dengan penulisan dari Sun, sebagai bagian dari dokumentasi JSSE standar:
http://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#Stores
Biasanya, trust store digunakan untuk menyimpan kunci publik saja, untuk keperluan verifikasi, seperti dengan otentikasi X.509. Untuk tujuan pengelolaan, cukup umum bagi admin atau pengembang untuk mengubah keduanya menjadi satu toko.
Di Jawa, apa perbedaan antara keystore dan truststore?
Berikut deskripsi dari dokumen Java di Panduan Referensi Ekstensi Java Secure Socket (JSSE) . Saya tidak berpikir itu memberitahu Anda sesuatu yang berbeda dari apa yang dikatakan orang lain. Tapi itu memang memberikan referensi resmi.
keystore / truststore
Keystore adalah basis data materi utama. Bahan utama digunakan untuk berbagai tujuan, termasuk otentikasi dan integritas data. Berbagai jenis keystores tersedia, termasuk PKCS12 dan JKS Oracle.
Secara umum, informasi keystore dapat dikelompokkan ke dalam dua kategori: entri kunci dan entri sertifikat tepercaya. Entri kunci terdiri dari identitas entitas dan kunci privasinya, dan dapat digunakan untuk berbagai keperluan kriptografi. Sebaliknya, entri sertifikat tepercaya hanya berisi kunci publik di samping identitas entitas. Dengan demikian, entri sertifikat tepercaya tidak dapat digunakan di mana kunci pribadi diperlukan, seperti di javax.net.ssl.KeyManager. Dalam implementasi JDK JKS, keystore dapat berisi entri kunci dan entri sertifikat tepercaya.
Truststore adalah keystore yang digunakan saat membuat keputusan tentang apa yang harus dipercaya. Jika Anda menerima data dari entitas yang sudah Anda percayai, dan jika Anda dapat memverifikasi bahwa entitas itu yang diklaimnya, maka Anda dapat mengasumsikan bahwa data tersebut benar-benar berasal dari entitas itu.
Entri hanya boleh ditambahkan ke truststore jika pengguna mempercayai entitas itu. Dengan menghasilkan pasangan kunci atau dengan mengimpor sertifikat, pengguna memberi kepercayaan pada entri itu. Setiap entri di truststore dianggap sebagai entri tepercaya.
Mungkin bermanfaat untuk memiliki dua file keystore yang berbeda: satu berisi hanya entri kunci Anda, dan yang lainnya berisi entri sertifikat tepercaya Anda, termasuk sertifikat CA. Yang pertama berisi informasi pribadi, sedangkan yang terakhir tidak. Menggunakan dua file alih-alih satu file keystore memberikan pemisahan yang lebih bersih dari perbedaan logis antara sertifikat Anda sendiri (dan kunci pribadi yang sesuai) dan sertifikat orang lain. Untuk memberikan lebih banyak perlindungan untuk kunci pribadi Anda, simpan di suatu keystore dengan akses terbatas, dan berikan sertifikat tepercaya ke dalam keystore yang lebih dapat diakses publik jika diperlukan.
Perbedaan pertama dan utama antara trustStore dan keyStore adalah bahwa trustStore digunakan oleh TrustManager untuk menentukan apakah koneksi jarak jauh harus dipercaya, keyStore digunakan dari KeyManager memutuskan kredensial otentikasi mana yang harus dikirim ke host jarak jauh untuk otentikasi selama jabat tangan SSL.
Perbedaan lainnya adalah bahwa keyStore secara teoritis berisi kunci pribadi yang diperlukan hanya jika Anda menjalankan Server dalam koneksi SSL atau Anda telah mengaktifkan otentikasi klien di sisi server dan di sisi lain trustStore menyimpan kunci publik atau sertifikat dari CA (Otoritas Sertifikat) yang digunakan untuk percayai pihak jauh atau koneksi SSL.
Bahkan Anda dapat menyimpan dalam file yang sama baik kunci privat maupun publik, mengingat bahwa alat untuk mengelola file tersebut adalah sama (keytool), sehingga Anda dapat menggunakan satu file untuk kedua tujuan, tetapi Anda mungkin sebaiknya tidak melakukannya .
Setidaknya pada Mac OSX saya, keyStore default adalah ${user.home}/.keystore
, dan trustStore default adalah /System/Library/Java/Support/CoreDeploy.bundle/Contents/Home/lib/security/cacerts
.
Jika Anda ingin menimpanya, Anda harus menambahkan parameter JVM
-Djavax.net.ssl.keyStore /path/to/keyStore
atau
-Djavax.net.ssl.trustStore /path/to/trustStore
. Anda mungkin juga perlu mengatur kata sandi keyStore jika
java.security.UnrecoverableKeyException: Password must not be
null
, menggunakan parameter
-Djavax.net.ssl.trustStorePassword=password
atau-Djavax.net.ssl.trustStorePassword=password
Sumber utama:
http://javarevisited.blogspot.co.uk/2012/09/difference-between-truststore-vs-keyStore-Java-SSL.html