.keystore 文件和 .jks 文件之间的区别

Posted

技术标签:

【中文标题】.keystore 文件和 .jks 文件之间的区别【英文标题】:Difference between .keystore file and .jks file 【发布时间】:2012-02-17 15:10:01 【问题描述】:

我试图找出.keystore 文件和.jks 文件之间的区别,但我找不到。我知道jks 用于“Java 密钥库”,两者都是存储键/值对的一种方式。

使用其中一个有什么区别或偏好吗?

【问题讨论】:

【参考方案1】:

最终,.keystore.jks 只是文件扩展名:您可以合理地命名文件。一些应用程序使用存储在$HOME/.keystore 中的密钥库文件:通常暗示它是一个JKS 文件,因为JKS is the default keystore type in the Sun/Oracle Java security provider。不是每个人都对 JKS 文件使用 .jks 扩展名,因为它是默认的。我建议使用扩展,只是为了记住要指定的类型(如果需要)。

在 Java 中,单词 keystore 可以具有以下任一含义,具体取决于上下文:

API:http://docs.oracle.com/javase/6/docs/api/java/security/KeyStore.html 可用于支持此 API 的文件(或其他机制) 与信任库相反的密钥库,如下所述:https://***.com/a/6341566/372643

当谈到文件和存储时,这并不是真正的键/值对存储工具(有很多或其他格式)。相反,它是一个存储加密密钥和证书的容器(我相信其中一些也可以存储密码)。通常,这些文件是加密的并受密码保护,以免这些数据提供给未经授权的各方。

Java 使用其KeyStore 类和相关 API 来使用密钥库 (whether it's file based or not)。 JKS 是一种特定于 Java 的文件格式,但该 API 也可以与其他文件类型一起使用,通常是 PKCS#12。当您要加载密钥库时,您必须指定其密钥库类型。常规的扩展是:

.jks 类型为 "JKS".p12.pfx 用于类型 "PKCS12"(规范名称为 PKCS#12,但 Java 密钥库类型名称中未使用 #)。

此外,BouncyCastle 还提供了它的实现,特别是 BKS(通常使用 .bks 扩展名),它经常用于 android 应用程序。

【讨论】:

我可以确认将扩展名从 .jks 更改为 .keystore 会起作用。做之前请备份!! 对不起,还是不太明白.keystore vs .jks @frank 这取决于上下文,它们只是文件扩展名。通常,它们是相同的实际文件类型(JKS 文件),但当然,文件扩展名只是一个指示。 @Bruno Keystore 具有三种含义,具体取决于上下文(如答案中所述)。但是对于.keystore 文件和.jks 文件,它们是相同的(只是文件扩展名不同),它们都包含公共/私人证书和密码,对吧?【参考方案2】:

你对此感到困惑。

keystore 是证书、私钥等的容器。

此密钥库的格式有规范,主要是#PKCS12

JKS 是 Java 的密钥库实现。还有BKS等。

这些都是密钥库类型

所以回答你的问题:

.keystore 文件和 .jks 文件的区别

没有。 JKS 是密钥库文件。 虽然密钥库 类型 之间存在差异。例如。 JKS#PKCS12

【讨论】:

我会说主要的 keystore 类型是 JKS,而不是 PKCS#12,只是因为“keystore”这个词是 Java 术语的一部分,很少在Java的上下文。话虽这么说,PKCS#12 文件确实很常见(通常是.pfx.p12)。 @Bruno:您的意思是 Java 应用程序中的主要类型。 不,我的意思是“keystore”这个词主要是一个 Java 词。其他应用程序/平台很少将存储密钥和证书的位置/文件称为“密钥库”。例如,MS 将 PKCS#12 文件称为“个人信息交换”文件。其他人的名称为“密钥链”(OSX)、“证书数据库”(NSS)、“证书存储”、“密钥环”……,用于存储密钥和证书的地方,而不是真正的“密钥库”。 @Bruno:我明白你的意思了。好点。我以前没有这样想过。谢谢【参考方案3】:

选择 .keystore 而不是 .jks 的一个原因是,当您导航选择密钥库文件(Unity 2017.3、macOS)时,Unity 会识别前者,但不会识别后者。

【讨论】:

你所说的“统一”是什么。我的 java 代理没有识别出同样的 .jks 文件问题。

以上是关于.keystore 文件和 .jks 文件之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

我可以在本机反应中使用 .jks 文件而不是 .keystore 文件吗?

如何将 x509.pem pk8 文件导入 jks-keystore?

jdk的keytool生成jks及获取jks的信息

java生成 *.crt和*.key文件与*.keystore *.jks文件的转换

java生成 *.crt和*.key文件与*.keystore *.jks文件的转换

在Java中读取/加载jks cert文件将返回空别名