在执行 keystore.load() 方法时,下面的代码每次都会出现“无效的密钥库格式”的 IOException。该文件已成功从 .jar 文件加载。在 Windows 10 专业版上使用 Java 1.8。Maven 用于编译和组装 jar 文件,然后一起 war 并作为 war 文件部署到 JBOSS 服务器。我试过 .getInstance 和 getDefault() 也有同样的错误。
InputStream stream;
stream = Thread.currentThread().getContextClassLoader()
.getResourceAsStream("cacerts.jks");
if (stream == null) {
stream = CustomTrustManager.class.getClassLoader()
.getResourceAsStream("cacerts.jks");
}
if(stream == null) {
Log.error("Unable to load cacerts.jks. This is needed to make HTTPS connections to internal servers.");
throw new NotFoundException();
}
KeyStore myTrustStore = KeyStore.getInstance("JKS");
myTrustStore.load(stream, "xxxxx".toCharArray());
“cacerts.jks”文件是使用以下命令从自签名服务器证书“server1.crt”文件生成的:
keytool -v -import -alias devserver -file server1.crt -keystore cacerts.jks
这成功完成并命令:
keytool -list -keystore cacerts.jks
Keystore type: JKS
Keystore provider: SUN
Your keystore contains 1 entry
devserver, Aug 15, 2019, trustedCertEntry,
Certificate fingerprint (SHA1): F6:7F:C9:95:0E:B8:59:07:24:23:67:93:43:B2:C9:AA:CD:5B:AF:68
显示密钥库文件没有问题。我浏览了许多 StackOverflow 文章,但没有一篇指出问题的解决方案。在调试模式下,资源加载后 InputStream 具有以下格式。我假设从 .jar 文件加载 ZipFile 类型是正常的。
感谢任何有关如何成功加载密钥库文件的见解。谢谢
偶然的你
jeck猫
波斯汪
海绵宝宝撒
相关分类