java'是什么格式;s cacerts格式预期为?

java'是什么格式;s cacerts格式预期为?,java,ssl,pki,Java,Ssl,Pki,我对cacerts格式有点困惑。我最近使用的一个应用程序必须升级它的cacerts文件。最初的cacerts文件是pk12格式(我假设它是二进制的),而新的格式显然是pem。我可以使用任何一种cacert,但当我建议某人在身份验证升级到新cacert时遇到问题时,他收到了投诉,因为它不是pk12格式 cacert的文件格式应该是什么?两种格式都可以吗?是否配置/定义了它应该使用的格式?在任何正常的Oracle Java安装上(在Java 9之前,这是一个旧的答案),cacerts应该是专有的二进

我对cacerts格式有点困惑。我最近使用的一个应用程序必须升级它的cacerts文件。最初的cacerts文件是pk12格式(我假设它是二进制的),而新的格式显然是pem。我可以使用任何一种cacert,但当我建议某人在身份验证升级到新cacert时遇到问题时,他收到了投诉,因为它不是pk12格式


cacert的文件格式应该是什么?两种格式都可以吗?是否配置/定义了它应该使用的格式?

在任何正常的Oracle Java安装上(在Java 9之前,这是一个旧的答案),
cacerts
应该是专有的二进制JKS密钥存储类型。我已经对照1.8.0\u20检查过了。从9开始,它被二进制PKCS#12密钥存储(或者更确切地说,可信证书存储)所取代

为了确保您可以在GNU系统(Linux)上使用
文件cacerts
。如果您有不同的JRE,您可能会有不同的JRE,或者替换
cacerts
文件

您可以使用JDK附带的
keytool
命令管理
cacerts
的内容


请注意,包含私钥的密钥存储对于身份验证,通常是一个PKCS#12密钥存储。

也许这可以帮助其他人进行类似的搜索:我试图找到Java运行时环境的受信任证书颁发机构的默认列表,因为我们想在Tomcat中安装SSL证书。最终不得不从谷歌搜索中删除oracle站点,并找到了解析列表二进制文件的方法。祝你在Oracle.com上找到它

\bin\keytool-list-keystore cacerts-storepass changeit

或者,在检查java控制面板-安全性-证书时,您也可以通过单击“系统”选项卡轻松完成此操作

java 9将根据JSR转换为默认的PKCS#12密钥存储。然而,在我的系统上,从4月初开始的当前开发版本(仍然?)为
cacerts
使用Java密钥存储。
<java jre directory>\bin\keytool -list -keystore cacerts -storepass changeit