Saya baru sahaja mengumumkan kursus Learn Spring yang baru , yang berfokus pada asas-asas Spring 5 dan Spring Boot 2:
>> SEMAK KURSUS1. Gambaran keseluruhan
Dalam artikel ringkas ini, kami akan memberikan gambaran umum mengenai perbezaan antara keystore Java dan Java truststore.
2. Konsep
Dalam kebanyakan kes, kami menggunakan kedai kunci dan kedai amanah apabila aplikasi kami perlu berkomunikasi melalui SSL / TLS .
Biasanya, ini adalah fail yang dilindungi kata laluan yang berada di sistem fail yang sama dengan aplikasi kami yang sedang berjalan. Format lalai yang digunakan untuk fail ini adalah JKS hingga Java 8 .
Oleh kerana Java 9, format keystore lalai adalah PKCS12 . Perbezaan terbesar antara JKS dan PKCS12 adalah bahawa JKS adalah format khusus untuk Java, sementara PKCS12 adalah cara standard dan tidak berbahasa untuk menyimpan kunci dan sijil peribadi yang disulitkan.
3. Java KeyStore
Kedai kunci Java menyimpan entri kunci peribadi, sijil dengan kunci awam atau hanya kunci rahsia yang mungkin kami gunakan untuk pelbagai tujuan kriptografi. Ia menyimpan setiap satu dengan alias untuk memudahkan pencarian.
Secara umum, kedai kunci menyimpan kunci yang dimiliki oleh aplikasi kita yang boleh kita gunakan untuk membuktikan integriti mesej dan keaslian pengirim, katakan dengan menandatangani muatan.
Biasanya, kami akan menggunakan kedai kunci semasa kami pelayan dan ingin menggunakan HTTPS . Semasa berjabat tangan SSL, pelayan mencari kunci peribadi dari kedai kunci dan menunjukkan kunci dan sijil awam yang sesuai kepada pelanggan.
Sejalan dengan itu, jika pelanggan juga perlu mengesahkan dirinya sendiri - situasi yang disebut saling pengesahan - maka pelanggan juga mempunyai kedai kunci dan juga menunjukkan kunci dan sijil awamnya.
Tidak ada kedai kunci lalai, jadi jika kita ingin menggunakan saluran yang dienkripsi, kita harus menetapkan javax.net.ssl.keyStore dan javax.net.ssl.keyStorePassword. Sekiranya format keystore kami berbeza dari default, kita boleh menggunakan javax.net.ssl.keyStoreType untuk menyesuaikannya.
Sudah tentu, kita dapat menggunakan kunci ini untuk memenuhi keperluan lain juga. Kunci peribadi boleh menandatangani atau menyahsulitkan data, dan kunci awam dapat mengesahkan atau menyulitkan data. Kekunci rahsia dapat melaksanakan fungsi ini juga. Kedai kunci adalah tempat yang boleh kita pegang dengan kunci ini.
Kami juga boleh berinteraksi dengan kedai kunci secara teratur.
4. Java TrustStore
Kedai amanah adalah sebaliknya - sementara kedai kunci biasanya memegang sijil yang mengenal pasti kita, kedai amanah memegang sijil yang mengenal pasti orang lain.
Di Jawa, kami menggunakannya untuk mempercayai pihak ketiga yang akan kami berhubung.
Ambil contoh awal kita. Sekiranya pelanggan bercakap dengan pelayan berasaskan Java melalui HTTPS, pelayan akan mencari kunci yang berkaitan dari kedai kuncinya dan menunjukkan kunci dan sijil awam kepada pelanggan.
Kami, pelanggan, kemudian mencari sijil yang berkaitan di kedai amanah kami. Sekiranya sijil atau Pihak Berkuasa Sijil yang ditunjukkan oleh pelayan luaran tidak ada di kedai amanah kami, kami akan mendapat SSLHandshakeException dan sambungan tidak akan berjaya disiapkan.
Java telah mengumpulkan sebuah kedai amanah yang disebut cacerts dan ia berada di direktori $ JAVA_HOME / jre / lib / security .
Ia mengandungi Pihak Berkuasa Sijil lalai dan dipercayai:
$ keytool -list -keystore cacerts Enter keystore password: Keystore type: JKS Keystore provider: SUN Your keystore contains 92 entries verisignclass2g2ca [jdk], 2018-06-13, trustedCertEntry, Certificate fingerprint (SHA1): B3:EA:C4:47:76:C9:C8:1C:EA:F2:9D:95:B6:CC:A0:08:1B:67:EC:9D
Kami melihat di sini bahawa kedai amanah mengandungi 92 entri sijil dipercayai dan salah satu entri tersebut adalah entri verisignclass2gca . Ini bermaksud bahawa JVM akan mempercayai sijil secara automatik yang ditandatangani oleh verisignclass2g2ca .
Di sini, kita boleh mengatasi lokasi kedai amanah lalai melalui harta javax.net.ssl.trustStore . Begitu juga, kita boleh menetapkan javax.net.ssl.trustStorePassword dan javax.net.ssl.trustStoreType untuk menentukan kata laluan dan jenis kepercayaan.
5. Kesimpulan
Dalam tutorial ini, kami membincangkan perbezaan utama antara keystore Java dan Java truststore dan tujuannya.
Juga, kami menunjukkan bagaimana lalai dapat diganti dengan sifat sistem.
Seterusnya, kita dapat melihat panduan SSL berikut atau Panduan Rujukan JSSE untuk mengetahui lebih banyak perincian mengenai komunikasi yang dienkripsi di Java.
Bahagian bawah Java