Rozdiel medzi Java Keystore a Truststore

Java Top

Práve som oznámil nové Naučte sa jar kurz zameraný na základy jari 5 a Spring Boot 2:

>> SKONTROLUJTE KURZ

1. Prehľad

V tomto rýchlom článku poskytneme prehľad rozdielov medzi skladom kľúčov Java a obchodom dôveryhodných objektov Java.

2. Koncepty

Väčšinou, obchod s kľúčmi a úložisko dôveryhodných informácií používame, keď potrebuje naša aplikácia komunikovať prostredníctvom protokolu SSL / TLS.

Zvyčajne ide o súbory chránené heslom, ktoré sú umiestnené v rovnakom systéme súborov ako naša spustená aplikácia. Predvolený formát používaný pre tieto súbory je JKS do Javy 8.

Od verzie Java 9 však predvolený formát úložiska kľúčov je PKCS12. Najväčší rozdiel medzi JKS a PKCS12 je v tom, že JKS je formát špecifický pre Javu, zatiaľ čo PKCS12 je štandardizovaný a jazykovo neutrálny spôsob ukladania šifrovaných súkromných kľúčov a certifikátov.

3. Java KeyStore

V sklade kľúčov Java sú uložené záznamy súkromných kľúčov, certifikáty s verejnými kľúčmi alebo iba tajné kľúče ktoré môžeme použiť na rôzne kryptografické účely. Každý z nich ukladá pod prezývkou pre jednoduchšie vyhľadávanie.

Všeobecne možno povedať, že úložiská kľúčov obsahujú kľúče, ktoré vlastní naša aplikácia a ktoré môžeme použiť na preukázanie integrity správy a autenticity odosielateľa, napríklad podpisom užitočných zaťažení.

Zvyčajne úložisko kľúčov použijeme, keď sme server a chceme používať HTTPS. Počas overenia totožnosti SSL server vyhľadá súkromný kľúč z úložiska kľúčov a predloží klientovi zodpovedajúci verejný kľúč a certifikát.

Zodpovedajúcim spôsobom, ak klient potrebuje aj vlastnú autentifikáciu - situácia, ktorá sa nazýva vzájomné overovanie -, potom má klient tiež sklad kľúčov a tiež predstavuje svoj verejný kľúč a certifikát.

Neexistuje žiadny predvolený ukladací priestor kľúčov, takže ak chceme použiť šifrovaný kanál, budeme ho musieť nastaviť javax.net.ssl.keyStore a javax.net.ssl.keyStorePassword. Ak je náš formát úložiska kľúčov iný ako predvolený, mohli by sme použiť javax.net.ssl.keyStoreType prispôsobiť to.

Tieto kľúče samozrejme môžeme použiť aj na vybavenie ďalších potrieb. Súkromné ​​kľúče môžu podpisovať alebo dešifrovať údaje a verejné kľúče môžu dáta overovať alebo šifrovať. Tieto funkcie môžu vykonávať aj tajné kľúče. Obchod s kľúčmi je miesto, ktoré môžeme držať týchto kľúčov.

S obchodom s kľúčmi môžeme tiež komunikovať programovo.

4. Java TrustStore

Dôverový obchod je pravý opak - zatiaľ čo obchod s kľúčmi zvyčajne obsahuje certifikáty, ktoré nás identifikujú, dôveryhodný obchod, ktorý uchováva certifikáty, ktoré identifikujú ostatných.

V prostredí Java ho používame na dôveru voči tretej strane, s ktorou sa chystáme komunikovať.

Vezmime si náš skorší príklad. Ak klient hovorí so serverom založeným na prostredí Java prostredníctvom protokolu HTTPS, server vyhľadá priradený kľúč z jeho úložiska kľúčov a predloží klientovi verejný kľúč a certifikát.

My, klient, potom vyhľadáme pridružený certifikát v našom úložisku dôvery. Ak certifikát alebo certifikačné autority predložené externým serverom nie sú v našom úložisku dôvery, dostaneme SSLHandshakeException a pripojenie nebude úspešne nadviazané.

Java združila dôveryhodné úložisko s názvom cacerts a býva v $ JAVA_HOME / jre / lib / zabezpečenie adresár.

Obsahuje predvolené dôveryhodné certifikačné autority:

$ keytool -list -keystore cacerts Zadajte heslo úložiska kľúčov: Typ úložiska kľúčov: JKS Poskytovateľ úložiska kľúčov: SUN Váš obchod s kľúčmi obsahuje 92 záznamov verisignclass2g2ca [jdk], 2018-06-13, trustedCertEntry, odtlačok certifikátu (SHA1): B3: EA: C4: 47 : 76: C9: C8: 1C: EA: F2: 9D: 95: B6: CC: A0: 08: 1B: 67: ES: 9D

Vidíme tu, že dôveryhodný obchod obsahuje 92 dôveryhodných položiek certifikátu a jeden z nich je verisignclass2gca vstup. To znamená, že JVM bude automaticky dôverovať certifikátom podpísaným verisignclass2g2ca.

Tu, môžeme prepísať predvolené umiestnenie úložiska dôvery cez javax.net.ssl.trustStore nehnuteľnosť. Podobne môžeme nastaviť javax.net.ssl.trustStorePassword a javax.net.ssl.trustStoreType zadajte heslo a typ úložiska dôveryhodnosti.

5. Záver

V tomto tutoriáli sme sa zaoberali hlavnými rozdielmi medzi skladom kľúčov Java a úložiskom dôveryhodných produktov Java a jeho účelom.

Ukázali sme tiež, ako možno predvolené nastavenia prepísať vlastnosťami systému.

Ďalej by sme sa mohli pozrieť na nasledujúcu príručku SSL alebo referenčnú príručku JSSE, kde sa dozvieme viac podrobností o šifrovanej komunikácii v prostredí Java.

Java dole

Práve som oznámil nové Naučte sa jar kurz zameraný na základy jari 5 a Spring Boot 2:

>> SKONTROLUJTE KURZ

$config[zx-auto] not found$config[zx-overlay] not found