Pergunta

Qual é a diferença entre um armazenamento de chave e um truststore?

Foi útil?

Solução

Um armazenamento de chaves contém chaves privadas e os certificados com as suas chaves públicas correspondentes.

Um truststore contém certificados de outras partes que você espera para se comunicar com, ou de autoridades de certificação que você confia para identificar outras partes.

Outras dicas

  1. Um armazenamento de chaves contém chaves privadas. Você só precisa isso, se estiver um servidor, ou se o servidor requer autenticação do cliente.

  2. Um truststore contém certificados CA para a confiança. Se o seu servidor é certificado é assinado por uma CA reconhecida, o truststore padrão que acompanha o JRE já vai confiar nele (porque já confia confiável CAs), para que você não precisa para construir o seu próprio, ou acrescentar nada ao que a partir do JRE.

Fonte

Em um SSL handshake o propósito de trustStore é para verificar as credenciais e a finalidade de keyStore é fornecer credencial .

keyStore

keyStore em lojas de Java chaves privadas e certificados correspondentes às suas chaves públicas e requerem se você estiver Servidor SSL ou SSL exige autenticação do cliente.

TrustStore

TrustStore armazena certificados de terceiros, seu aplicativo Java comunicar ou certificados assinados por CA (autoridades de certificação como Verisign, Thawte, Geotrust ou GoDaddy), que pode ser usado para identificar terceiros.

TrustManager

TrustManager determina se a conexão remota deve ser confiável ou não ou seja, se parte remota é que ela afirma e KeyManager decide quais credenciais de autenticação devem ser enviados para o host remoto para autenticação durante o handshake SSL.

Se você é um servidor SSL que você irá usar a chave privada durante certificados de chave algoritmo de câmbio e de envio correspondentes a suas chaves públicas para o cliente, este certificado é adquirido de keyStore. No lado do cliente SSL, se o seu escrito em Java, ele usará certificados armazenados em trustStore para verificar a identidade do servidor. certificados SSL são mais comumente vem como .cer arquivo que é adicionado em keyStore ou trustStore usando qualquer utilitário de gerenciamento de chaves, por exemplo keytool .

Fonte: http: // javarevisited.blogspot.ch

Você pode também estar interessado no write-up da Sun, como parte da documentação padrão JSSE:

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

Normalmente, o armazenamento de confiança é usado para armazenar apenas as chaves públicas, para fins de verificação, como com X.509 autenticação. Para fins de gerenciamento, é bastante comum para os administradores ou desenvolvedores simplesmente fundir os dois em uma única loja.

Em Java, qual é a diferença entre um armazenamento de chave e um truststore?

Aqui está a descrição dos docs Java na Java Secure Socket Extension (JSSE) Guia de referência . Eu não acho que ela lhe diga diferente qualquer coisa de que outros já disseram. Mas fornece a referência oficial.

keystore / truststore

Um armazenamento de chaves é um banco de dados de material de chave. material de chave é usado para uma variedade de fins, incluindo autenticação e integridade dos dados. Vários tipos de armazenamentos de chaves estão disponíveis, incluindo PKCS12 e da Oracle JKS.

De um modo geral, informações de armazenamento de chaves podem ser agrupados em duas categorias: entradas principais e entradas de certificação confiáveis. A entrada de chave consiste da identidade de uma entidade e sua chave privada, e pode ser usado para uma variedade de fins criptográficos. Em contraste, a confiança entrada certificado contém apenas uma chave pública, além da identidade da entidade. Assim, uma entrada de certificado confiável não pode ser usado onde uma chave privada é necessária, como em um javax.net.ssl.KeyManager. Na implementação JDK de JKS, um armazenamento de chaves pode conter as duas entradas principais e entradas de certificação confiáveis.

Um truststore é um armazenamento de chaves que é usado na tomada de decisões sobre o que confiança. Se você receber dados de uma entidade que Já a confiança, e se você pode verificar que a entidade é a que que afirma ser, então você pode assumir que os dados realmente veio essa entidade.

Uma entrada só deve ser adicionado a um truststore se o usuário confia essa entidade. Por qualquer gerar um par de chaves ou importando um certificado, o usuário dá confiança para essa entrada. Qualquer entrada na truststore é considerado uma entrada confiável.

Pode ser útil ter dois arquivos de armazenamento de chaves diferentes: um contendo apenas as entradas principais, eo outro contendo o seu entradas de certificação confiáveis, incluindo certificados de CA. O antigo contém informações privadas, enquanto o segundo não. usando dois arquivos em vez de um único arquivo de armazenamento de chaves fornece uma separação mais clara da distinção lógica entre seus próprios certificados (e correspondente chaves privadas) e certificados de outras pessoas. Para fornecer mais proteção para suas chaves privadas, armazená-los em um armazenamento de chave com Acesso restrito, e fornecer os certificados confiáveis ??de uma forma mais armazenamento de chaves de acesso público, se necessário.

  1. Primeiro e principal diferença entre trustStore e keyStore se que trustStore é usado por TrustManager para determinar se a conexão remota deve ser confiável, keyStore é usado desde KeyManager decidir quais as credenciais de autenticação devem ser enviados para o host remoto para autenticação durante SSL aperto de mão.

  2. Outra diferença é que keyStore contém teoricamente chaves privadas necessário apenas se você estiver executando um servidor em conexão SSL ou você tiver habilitado a autenticação do cliente no lado do servidor e na chave pública outro lado trustStore lojas ou certificados de CA (Certificate autoridades) que são usados ??para confiar parte remota ou conexão SSL.

    Na verdade, você pode armazenar no mesmo arquivo ambas as chaves públicas e privadas, dado que a ferramenta para gerenciar os arquivos é o mesmo (keytool), então você poderia usar um único arquivo para ambos os fins, mas você provavelmente não deve .

  3. Pelo menos no meu Mac OSX o padrão keyStore é ${user.home}/.keystore, eo trustStore padrão é /System/Library/Java/Support/CoreDeploy.bundle/Contents/Home/lib/security/cacerts.

    Se você quiser substituí-los você deve adicionar os parâmetros de JVM -Djavax.net.ssl.keyStore /path/to/keyStore ou -Djavax.net.ssl.trustStore /path/to/trustStore. Você pode também necessidade de definir a senha keyStore em caso de java.security.UnrecoverableKeyException: Password must not be null, usando o parâmetro -Djavax.net.ssl.trustStorePassword=password ou -Djavax.net.ssl.trustStorePassword=password

Fonte principal:

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top