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

两者之间有什么区别或偏好吗?


你对此感到困惑。

密钥存储库是一个包含证书、私钥等的容器。

对于这个密钥存储库的格式有一些规范,最主要的是#PKCS12

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

这些都是密钥库类型。

我来回答你的问题

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

没有。JKS是keystore文件。 不过,密钥库类型之间存在差异。例如JKS vs #PKCS12

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

在Java中,根据上下文,单词keystore可以有以下任何一种含义:

API: http://docs.oracle.com/javase/6/docs/api/java/security/KeyStore.html 一个可以用来支持这个API的文件(或其他机制) 与信任库相反的密钥存储库,如此处所述:https://stackoverflow.com/a/6341566/372643

在讨论文件和存储时,这实际上不是键/值对的存储工具(有很多或其他格式)。相反,它是一个存储加密密钥和证书的容器(我相信其中一些还可以存储密码)。一般来说,这些文件都是加密和密码保护的,这样就不会让未经授权的一方获得这些数据。

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

.jks为“JKS”类型, 用于“PKCS12”类型的.p12或.pfx(规范名称是pkcs# 12,但在Java密钥库类型名称中没有使用#)。

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

选择.keystore而不是.jks的一个原因是,当你导航选择keystore文件时,Unity可以识别前者,但不能识别后者(Unity 2017.3, macOS)。