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?
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.
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).
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:
Não há nenhum. JKS são arquivos de armazenamento de chaves. Há diferença entre os tipos de keystore . Eg
JKS
vs#PKCS12
fonte
.pfx
ou.p12
).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).
fonte