Domanda

Qual è la differenza tra un keystore e un truststore?

È stato utile?

Soluzione

Un keystore contiene chiavi private e i certificati con le corrispondenti chiavi pubbliche.

Un truststore contiene certificati di altre parti con cui prevedi di comunicare o di autorità di certificazione di cui ti fidi per identificare altre parti.

Altri suggerimenti

  1. Un keystore contiene chiavi private. Ne hai bisogno solo se lo sei un server o se il server richiede l'autenticazione client.

  2. Un truststore contiene certificati CA affidabili. Se il tuo server & # 8217; s il certificato è firmato da una CA riconosciuta, il truststore predefinito che viene fornito con JRE si fiderà già di esso (perché già si fida di CA affidabili), quindi non è necessario crearne una tua, o per aggiungere qualcosa a quello di JRE.

Fonte

In una stretta di mano SSL lo scopo di trustStore è verificare le credenziali e lo scopo di keyStore è fornire credenziali .

keyStore

keyStore in Java memorizza chiave privata e certificati corrispondenti alle loro chiavi pubbliche e richiede se si è SSL Server o SSL richiede l'autenticazione client.

TrustStore

TrustStore memorizza certificati di terze parti, l'applicazione Java comunica o certificati firmati da CA (autorità di certificazione come Verisign, Thawte, Geotrust o GoDaddy) che possono essere utilizzati per identificare terze parti.

TrustManager

TrustManager determina se la connessione remota deve essere attendibile o meno, ovvero se la parte remota è chi rivendica e KeyManager decide quali credenziali di autenticazione devono essere inviate all'host remoto per l'autenticazione durante l'handshake SSL.

Se sei un server SSL, utilizzerai la chiave privata durante l'algoritmo di scambio delle chiavi e invierai certificati corrispondenti alle tue chiavi pubbliche al client, questo certificato viene acquisito da keyStore. Sul lato client SSL, se è scritto in Java, utilizzerà i certificati archiviati in trustStore per verificare l'identità del server. I certificati SSL sono più comunemente disponibili come file .cer che viene aggiunto in keyStore o trustStore utilizzando qualsiasi utilità di gestione delle chiavi, ad es. keytool .

Fonte: http: // javarevisited.blogspot.ch

Potresti anche essere interessato a scrivere da Sun, come parte della documentazione standard JSSE:

http: // docs. oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#Stores

In genere, il truststore viene utilizzato per archiviare solo le chiavi pubbliche, a scopo di verifica, ad esempio con l'autenticazione X.509. Ai fini della gestibilità, è abbastanza comune per amministratori o sviluppatori semplicemente confondere i due in un unico negozio.

  

In Java, qual è la differenza tra un keystore e un truststore?

Ecco la descrizione dei documenti Java su Java Secure Socket Extension (JSSE) Guida di riferimento . Non credo che ti dica qualcosa di diverso da quello che gli altri hanno detto. Ma fornisce il riferimento ufficiale.

  

keystore / truststore

     

Un keystore è un database di materiale chiave. Il materiale chiave viene utilizzato per vari scopi, tra cui l'autenticazione e l'integrità dei dati.   Sono disponibili vari tipi di keystore, tra cui PKCS12 e   Oracle JKS.

     

In generale, le informazioni sul keystore possono essere raggruppate in due categorie: voci chiave e voci di certificato attendibili. Una voce chiave   è costituito dall'identità di un'entità e dalla sua chiave privata e può essere utilizzato   per una varietà di scopi crittografici. Al contrario, un affidabile   la voce del certificato contiene solo una chiave pubblica oltre a   identità dell'entità. Pertanto, non è possibile utilizzare una voce di certificato attendibile   dove è richiesta una chiave privata, come in a   javax.net.ssl.KeyManager. Nell'implementazione JDK di JKS, un keystore   può contenere sia voci chiave che voci di certificato attendibili.

     

Un truststore è un keystore che viene utilizzato quando si prendono decisioni su cosa fidarsi. Se ricevi dati da un'entità che tu   già fiducia, e se è possibile verificare che l'entità sia quella   afferma di essere, quindi puoi presumere che i dati provengano davvero   quell'entità.

     

Una voce deve essere aggiunta a un truststore solo se l'utente si fida di quell'entità. Generando una coppia di chiavi o importando a   certificato, l'utente dà fiducia a quella voce. Qualsiasi voce nel   truststore è considerato una voce attendibile.

     

Potrebbe essere utile avere due diversi file di archivio chiavi: uno contenente solo le voci della chiave e l'altro contenente la tua   voci di certificato attendibili, inclusi i certificati CA. L'ex   contiene informazioni private, mentre quest'ultima no. Usando due   file invece di un singolo file keystore fornisce una separazione più pulita   della distinzione logica tra i propri certificati (e   corrispondenti chiavi private) e altri certificati. Per fornire di più   protezione per le tue chiavi private, memorizzale in un keystore con   accesso limitato e fornire i certificati attendibili in più   keystore accessibile al pubblico, se necessario.

  1. La prima e principale differenza tra trustStore e keyStore è che trustStore viene utilizzato da TrustManager per determinare se la connessione remota deve essere attendibile, keyStore viene utilizzato da KeyManager decidendo quali credenziali di autenticazione devono essere inviate all'host remoto per l'autenticazione durante SSL stretta di mano.

  2. Un'altra differenza è che keyStore contiene teoricamente chiavi private richieste solo se si esegue un server in connessione SSL o se è stata abilitata l'autenticazione client sul lato server e d'altra parte trustStore archivia chiave pubblica o certificati da CA (certificato Autorità) utilizzate per fidarsi della connessione remota o SSL.

    In effetti puoi archiviare nello stesso file sia chiavi private che pubbliche, dato che lo strumento per gestire quei file è lo stesso (keytool), quindi potresti usare un singolo file per entrambi gli scopi, ma tu probabilmente non dovrebbe .

  3. Almeno sul mio Mac OSX il keystore predefinito è $ {user.home} /. keystore e il truststore predefinito è / System / Library / Java / Support / CoreDeploy.bundle / Contents / Home / lib / security / cacerts .

    Se si desidera sovrascriverli, è necessario aggiungere i parametri JVM -Djavax.net.ssl.keyStore / path / to / keyStore o -Djavax.net.ssl.trustStore / path / to / trustStore . Potresti anche è necessario impostare la password keyStore in caso di java.security.UnrecoverableKeyException: la password non deve essere null , usando il parametro -Djavax.net.ssl.trustStorePassword = password o -Djavax.net.ssl.trustStorePassword=password

Fonte principale:

  

http: // javarevisited.blogspot.co.uk/2012/09/difference-between-truststore-vs-keyStore-Java-SSL.html

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top