Diferencia entre el archivo .keystore y el archivo .jks

227

Intenté encontrar la diferencia entre .keystorearchivos y .jksarchivos, pero no pude encontrarla. Sé que jkses para "Java keystore" y ambos son una forma de almacenar pares clave / valor.

¿Hay alguna diferencia o una preferencia para usar uno sobre otro?

juveria
fuente

Respuestas:

197

En última instancia, .keystorey .jksson solo extensiones de archivo: depende de usted nombrar sus archivos con sensatez. Algunas aplicaciones usan un archivo de almacén de claves almacenado $HOME/.keystore: generalmente se supone que es un archivo JKS, ya que JKS es el tipo de almacén de claves predeterminado en el proveedor de seguridad Sun / Oracle Java . No todos usan la .jksextensión para archivos JKS, porque está implícita como predeterminada. Recomiendo usar la extensión, solo para recordar qué tipo especificar (si es necesario).

En Java, la palabra almacén de claves puede tener cualquiera de los siguientes significados, según el contexto:

Cuando se habla del archivo y el almacenamiento, esto no es realmente una instalación de almacenamiento para pares clave / valor (hay muchos u otros formatos para esto). Más bien, es un contenedor para almacenar claves criptográficas y certificados (creo que algunos de ellos también pueden almacenar contraseñas). En general, estos archivos están encriptados y protegidos con contraseña para no permitir que esta información esté disponible para terceros no autorizados.

Java usa su KeyStoreclase y API relacionada para hacer uso de un almacén de claves ( ya sea que esté basado en archivos o no ). JKSes un formato de archivo específico de Java, pero la API también se puede usar con otros tipos de archivos, generalmente PKCS # 12. Cuando desee cargar un almacén de claves, debe especificar su tipo de almacén de claves. Las extensiones convencionales serían:

  • .jkspor tipo "JKS",
  • .p12o .pfxpara tipo "PKCS12"(el nombre de la especificación es PKCS # 12, pero #no se usa en el nombre de tipo del almacén de claves Java).

Además, BouncyCastle también proporciona sus implementaciones, en particular BKS (generalmente usando la .bksextensión), que se usa con frecuencia para aplicaciones de Android.

Bruno
fuente
Puedo confirmar que cambiar la extensión de .jks a .keystore funcionará. ¡Por favor haga una copia de seguridad antes de hacerlo!
BMaximus
77

Estás confundido sobre esto.

A keystorees un contenedor de certificados, claves privadas, etc.

Hay especificaciones de cuál debería ser el formato de este almacén de claves y el predominante es el # PKCS12

JKS es la implementación del almacén de claves de Java. También hay BKS, etc.

Estos son todos los tipos de almacén de claves .

Entonces para responder a su pregunta:

diferencia entre archivos .keystore y archivos .jks

No hay ninguno. JKS son archivos de almacén de claves. Sin embargo, existe una diferencia entre los tipos de almacén de claves . Ej. JKSVs#PKCS12

Cratilo
fuente
2
Diría que el tipo de almacén de claves predominante es JKS, no PKCS # 12, solo porque la palabra "almacén de claves" es parte de la terminología de Java, que rara vez se usa fuera del contexto de Java. Dicho esto, los archivos PKCS # 12 son bastante comunes (típicamente .pfxo .p12).
Bruno
@Bruno: Te refieres al tipo predominante en las aplicaciones Java.
Cratylus
10
No, quiero decir que la palabra "almacén de claves" es principalmente una palabra Java. Otras aplicaciones / plataformas rara vez llaman al lugar / archivo donde se almacenan las claves y los certificados un "almacén de claves". MS llama a los archivos PKCS # 12 "Intercambio de información personal", por ejemplo. Otros tienen nombres como "llavero" (OSX), "base de datos de certificados" (NSS), "almacén de certificados", "llaveros", ..., para los lugares donde almacenan claves y certificados, no realmente "almacén de claves".
Bruno
3
@Bruno: entiendo lo que quieres decir. Buen punto. No había pensado en esto así antes
Cratylus
3

Una razón para elegir .keystore en lugar de .jks es que Unity reconoce el primero pero no el segundo cuando navega para seleccionar su archivo de almacén de claves (Unity 2017.3, macOS).

AbePralle
fuente