Pergunta

Acabei de criar um Truststore com o Java Keytool (para a autenticação do servidor de um servidor que não possui um CA CER). No entanto, acabei de notar algo estranho. Estou começando meu cliente assim:

java -Djavax.net.ssl.trustStore=<PATHSTUFF>/client.keystore -classpath <STUFF> Client

(Nota: não há uma senha especificada)

A chamada acima funciona.


No entanto, quando eu tento:

java -classpath <STUFF> Client

Não funciona. (Obviamente, ele não funciona, requer o TrustStore).


Eu esperava precisar passar nesta opção (mas não o fiz):

-Djavax.net.ssl.trustStorePassword=mypass

Pergunta: Você não precisa de uma senha para acessar um TrustStore? A senha é apenas para modificação? Que tal uma palestra?

Foi útil?

Solução

A senha é usada para proteger a integridade de uma parte de chave. Se você não fornecer nenhuma senha de loja, ainda poderá ler o conteúdo da keystore. O comando keytool -list demonstra esse comportamento (use -o com uma senha vazia).

Outras dicas

Além da excelente resposta de @Pascal-Thivent:

A senha de keystore tem dois propósitos - se não for fornecidos, keytool Recunda -se a permitir que você substitua o conteúdo da loja por novo conteúdo, por exemplo, excluindo existentes ou adicionando novas entradas de certificado.

Obviamente, se você tem acesso para atualizar o arquivo keystore usando keytool (Não é setuid), você pode substituir o conteúdo usando outra ferramenta que não verificou a senha. E sabemos que a loja e seu formato são legíveis sem uma senha, então presumivelmente podemos escrever o que queremos lá.

É aí que entra a senha de verificação. Quando as entradas da loja são escritas, a senha da loja fornecida é usada para calcular um resumo dos conteúdo da loja, conforme salgado pela senha. Este é um hash/resumo unidirecional; portanto, sem a senha, você não pode verificar se o conteúdo da loja foi adulterado ou não. Da mesma forma, alguém malicioso que não sabe que a senha também não pode modificar o conteúdo da loja e produzir o resumo que seria produzido por essa senha.

É por isso que quando você fornece nenhuma palavra, keytool Apenas avisa que não pode verificar se a loja não foi adulterada. Se você fornecer um inválido Senha, ou a loja tem foi adulterado, você receberá uma mensagem diferente:

Enter keystore password: keytool error: java.io.IOException: Keystore was tampered with, or password was incorrect

keytool não conseguiu recriar o resumo existente de hash com base no conteúdo atual da loja e na senha que você forneceu, portanto a senha está incorreta ou a keystore está comprometida - keytool Não sei dizer, mas assume que você ou o software que lê a loja sabe.

Observe que enquanto o termo keystore é usado geralmente, refere -se igualmente a Keystores e TrustStors. Menos generalmente, a keystore é mais frequentemente um loja de identidade e contém identidades e suas chaves particulares e privadas, conforme usado por um servidor executando HTTPS. UMA TrustStore com mais frequência contém apenas chaves públicas e não -chaves privadas, portanto, não segredos, mas é importante para determinar quais identidades um cliente confiança.

Se você estiver perguntando se há mais alguma para atualizar seus bancos de dados de conteúdo em sua totalidade, desde que não houver soluções personalizadas (essas necessidades de serem migradas), você poderá apenas executar o procedimento de atualização de conteúdo de conteúdoque apontará para um aplicativo da Web e o mapeamento / estrutura do site será o mesmo que estava na versão anterior.

Por padrão, a senha do JRE Trust Store é "Changeit". Se você deseja alterar a senha padrão do Trust Store (CACERTS) usando o Java, passe esse link.

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