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


226

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

有什么不同或偏爱使用一种而不是另一种?

Answers:


197

最终,.keystore并且.jks只是文件扩展名:这是由你来理智命名您的文件。一些应用程序使用存储在$HOME/.keystore其中的密钥库文件:通常暗示它是JKS文件,因为JKS是Sun / Oracle Java安全提供程序中的默认密钥库类型。并非所有人都使用.jksJKS文件扩展名,因为它是默认名称。我建议使用扩展名,只是记住要指定的类型(如果需要)。

在Java中,根据上下文,关键字密钥库可以具有以下含义之一:

在谈论文件和存储时,这实际上不是键/值对的存储工具(有很多其他格式)。而是一个存储密码密钥和证书的容器(我相信其中一些还可以存储密码)。通常,这些文件经过加密和密码保护,以免未经授权的用户使用此数据。

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

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

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


我可以确认,将扩展名从.jks更改为.keystore是可以的。请备份后再做!!
BMaximus

77

您对此感到困惑。

A keystore是证书,私钥等的容器。

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

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

这些都是密钥库类型

因此,回答您的问题:

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

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


2
我会说主要的密钥库类型是JKS,而不是PKCS#12,只是因为单词“ keystore”是Java术语的一部分,很少在Java上下文之外使用。话虽如此,PKCS#12文件确实非常普遍(通常是.pfx.p12)。
布鲁诺2012年

@Bruno:您的意思是Java应用程序中的主要类型。
Cratylus 2012年

10
不,我的意思是“密钥库”一词主要是Java词。其他应用程序/平台很少将密钥和证书存储在的位置/文件称为“密钥库”。例如,MS将PKCS#12文件称为“个人信息交换”文件。其他人则使用“密钥链”(OSX),“证书数据库”(NSS),“证书存储”,“密钥环”等名称作为存储密钥和证书的地方,而不是真正的“密钥库”。
布鲁诺2012年

3
@Bruno:我明白你的意思了。好点。我之前从未想过。
谢谢

3

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.