289

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

使用一个比另一个有什么区别或偏好吗?

4

3 回答 3

239

归根结底,.keystore只是.jks文件扩展名:您可以合理地命名文件。某些应用程序使用存储在 中的密钥库文件$HOME/.keystore:通常暗示它是 JKS 文件,因为JKS 是 Sun/Oracle Java 安全提供程序中的默认密钥库类型。不是每个人都使用.jksJKS 文件的扩展名,因为它是默认的。我建议使用扩展名,只是为了记住要指定的类型(如果需要)。

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

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

Java 使用其KeyStore类和相关 API 来使用密钥库(无论它是否基于文件)。JKS是一种特定于 Java 的文件格式,但 API 也可以与其他文件类型一起使用,通常是 PKCS#12。当您要加载密钥库时,您必须指定其密钥库类型。传统的扩展是:

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

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

于 2012-01-27T22:40:14.343 回答
95

你对此感到困惑。

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

有关于这个密钥库的格式的规范,主要是#PKCS12

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

这些都是密钥库类型

所以回答你的问题:

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

空无一人。JKS 是密钥库文件。虽然密钥库类型之间存在差异。例如JKS#PKCS12

于 2012-01-25T21:27:34.963 回答
4

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

于 2018-01-24T23:27:44.267 回答