Diferença entre o arquivo .keystore e o arquivo .jks

227

Tentei encontrar a diferença entre .keystorearquivos e .jksarquivos, mas não consegui encontrá-la. Eu sei que jksé para "Java keystore" e ambos são uma maneira de armazenar pares de chave / valor.

Existe alguma diferença ou preferência em usar um sobre o outro?

juveria
fonte

Respostas:

197

Em última análise, .keystoree .jkssão apenas extensões de arquivo: cabe a você nomeie seus arquivos de forma sensata. Alguns aplicativos usam um arquivo keystore armazenado em $HOME/.keystore: geralmente está implícito que é um arquivo JKS, pois JKS é o tipo de keystore padrão no provedor de segurança Java da Sun / Oracle . Nem todo mundo usa a .jksextensão para arquivos JKS, porque está implícita como padrão. Eu recomendo usar a extensão, apenas para lembrar qual tipo especificar (se você precisar).

Em Java, a palavra keystore pode ter um dos seguintes significados, dependendo do contexto:

Ao falar sobre o arquivo e o armazenamento, esse não é realmente um recurso de armazenamento para pares de chave / valor (existem muitos ou outros formatos para isso). Em vez disso, é um contêiner para armazenar chaves e certificados criptográficos (acredito que alguns deles também podem armazenar senhas). Geralmente, esses arquivos são criptografados e protegidos por senha para não deixar esses dados disponíveis para terceiros não autorizados.

Java usa sua KeyStoreclasse e API relacionada para fazer uso de um keystore ( seja baseado em arquivo ou não ). JKSé um formato de arquivo específico para Java, mas a API também pode ser usada com outros tipos de arquivo, geralmente o PKCS # 12. Quando você deseja carregar um keystore, você deve especificar seu tipo de keystore. As extensões convencionais seriam:

  • .jkspara o tipo "JKS",
  • .p12ou .pfxpara o tipo "PKCS12"(o nome da especificação é PKCS # 12, mas #não é usado no nome do tipo de keystore Java).

Além disso, o BouncyCastle também fornece suas implementações, em particular o BKS (normalmente usando a .bksextensão), que é frequentemente usada para aplicativos Android.

Bruno
fonte
Posso confirmar que alterar a extensão de .jks para .keystore funcionará. Por favor, faça backup antes de fazer isso !!
BMaximus 4/09/19
77

Você está confuso sobre isso.

A keystoreé um contêiner de certificados, chaves privadas etc.

Existem especificações sobre qual deve ser o formato desse keystore e o predominante é o # PKCS12

JKS é a implementação de keystore do Java. Há também BKS etc.

Esses são todos os tipos de keystore .

Então, para responder sua pergunta:

diferença entre arquivos .keystore e arquivos .jks

Não há nenhum. JKS são arquivos de armazenamento de chaves. Há diferença entre os tipos de keystore . Eg JKSvs#PKCS12

Cratylus
fonte
2
Eu diria que o tipo de keystore predominante é JKS, não PKCS # 12, apenas porque a palavra "keystore" faz parte da terminologia Java, raramente usada fora do contexto de Java. Dito isto, os arquivos PKCS # 12 são bastante comuns (normalmente .pfxou .p12).
Bruno Bruno
@ Bruno: Você quer dizer o tipo predominante em aplicativos Java.
Cratylus
10
Não, quero dizer que a palavra "keystore" é principalmente uma palavra Java. Outros aplicativos / plataformas raramente chamam o local / arquivo em que as chaves e os certificados armazenam um "keystore". A Microsoft chama os arquivos PKCS # 12 de "Troca de informações pessoais", por exemplo. Outros têm nomes como "chaveiro" (OSX), "banco de dados de certificados" (NSS), "armazenamento de certificados", "chaveiros", ..., para os locais onde eles armazenam chaves e certificados, e não realmente "armazenamento de chaves".
Bruno
3
@Bruno: Entendo o que você quer dizer. Bom ponto. Eu não tinha pensado nisso dessa maneira antes
Cratylus
3

Um motivo para escolher .keystore em vez de .jks é que o Unity reconhece o primeiro, mas não o último, quando você está navegando para selecionar seu arquivo de keystore (Unity 2017.3, macOS).

AbePralle
fonte