Qual é a diferença entre cacerts e keystore?

112

Qual é a diferença entre os dois, cacerts e keystore?

Se eu usar a definição encontrada nesses links, cacerts e keystore , parece que eles são uma coleção de certificados, mas no contexto de um sistema distribuído (Java). Qual deles é usado para autenticar durante uma conexão SSL? Ambos ou apenas um deles ou alternativo?

dimas
fonte
3
cacerts = certificados de autoridade de certificação ?
Peter Mortensen

Respostas:

139

'cacerts' é um armazenamento confiável. Um armazenamento confiável é usado para autenticar pares. Um armazenamento de chaves é usado para se autenticar.

Marquês de Lorne
fonte
Olá EJP obrigado pelas respostas, citei isso antes de ler qualquer uma de suas respostas;) Só um esclarecimento se eu resumir suas respostas em Francisco e Pangéia. Cacerts é usado para autenticar clientes que solicitam acesso ou conexão e, para keystore, não entendo por que você gostaria de se autenticar. :)
dimas
20
Leia o que escrevi novamente. (1) Um armazenamento confiável é usado para autenticar pares. Se você é o cliente, o servidor é o par; se você é o servidor, vice-versa. (2) Se você é do servidor, ou se você é o cliente e o autenticação do cliente solicitações do servidor, você tem que se autenticar para o peer, então você precisa de seu próprio certificado e chave privada, que estão no armazenamento de chaves. (É confuso, o mesmo formato de arquivo é usado para ambos e é chamado de arquivo de armazenamento de chaves.)
Marquês de Lorne
OK, entendi, mas apenas uma pergunta de acompanhamento. Meu cacerts contém todos os certificados armazenados no keystore e muito mais. Embora alguns certificados, incluindo o certificado privado do meu aplicativo, tenham aliases diferentes, mas eles têm as mesmas assinaturas digitais. Então, idealmente, posso usar meu cacerts se me conectar ao servidor e solicitar autenticação?
dimas
Não entendo a parte sobre 'aliases diferentes'. Diferente de quê? Sua pergunta final pode ser respondida por experimento.
Marquês de Lorne
3
@ raja777m cacertsé em quem você confia. Não vejo razão para que isso mude entre ambientes, a menos que você cometa o erro de usar certificados autoassinados para servidores de teste: um erro porque significa que você está usando caminhos de código diferentes em teste e em produção.
Marquês de Lorne
41

cacerts é onde Java armazena certificados públicos de CAs raiz. Java usa cacerts para autenticar os servidores.

Keystore é onde Java armazena as chaves privadas dos clientes para que possa compartilhá-las com o servidor quando o servidor solicitar autenticação do cliente.

Aravind Yarram
fonte
@dimas Evidentemente, mas o que ele realmente quer dizer é 'pedidos'.
Marquês de Lorne
1
@ user207421 Acredito nesta resposta que o aplicativo Java está desempenhando o papel de um cliente http e o url http que nosso aplicativo Java chama é o aplicativo do servidor. Portanto, o KeyStore de nosso aplicativo Java cliente deve ter a chave privada + certificado (chave pública assinada) e enviar apenas o certificado para o aplicativo do servidor, certo? E se o aplicativo de servidor também for um aplicativo Java, ele verifica o certificado enviado por nosso aplicativo Java cliente, usando seu próprio arquivo cacert, certo?
user104309
0

Cacerts são detalhes de autoridades de assinatura confiáveis ​​que podem emitir certificados. Isso é o que a maioria dos navegadores possuem, pelo que certos certificados são considerados autênticos. A Keystone tem seus certificados de serviço para autenticar clientes.

Mandíbula
fonte
-2

Verifique seu caminho JAVA_HOME. Como os sistemas procuram por um arquivo java.policy que está localizado em JAVA_HOME/jre/lib/security. Seu JAVA_HOME deve ser sempre ../JAVA/JDK.

naveen verma
fonte
3
obrigado pelo esforço, mas você deve ler e compreender a resposta EJPs.
dimas