在Java中读取/加载jks cert文件将返回空别名
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Java中读取/加载jks cert文件将返回空别名相关的知识,希望对你有一定的参考价值。
我正在尝试使用Java中的KeyStore加载和读取cert文件的值。这是我加载jks文件的代码片段。它不会抛出任何异常,但keyStore.aliases不会返回任何异常并且为空。
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
Class clazz = Matcher.class;
InputStream inputStream = clazz.getResourceAsStream("/mycert.jks");
keyStore.load(inputStream, "password".toCharArray());
Enumeration<String> keyStoreAliases = keyStore.aliases();
同时,当我尝试使用下面的keytool列出相同.jks文件的所有别名时,$ keytool -v -list -keystore mycert.jks它列出了控制台中cert的所有信息(别名和值)。
谁能帮我理解我在这里缺少什么?
答案
如果提供的KeyStore.load()
为null,InputStream
很可能不会抛出任何异常。这种行为取决于实现,但通常的sun.security.provider.JavaKeyStore
实现不会抛出。
可能是您的系统上没有/mycert.jks
文件。
InputStream in = getClass().getResourceAsStream("/mycert.jks");
if (in == null) {
throw new NullPointerException("No JKS input stream");
}
以上是关于在Java中读取/加载jks cert文件将返回空别名的主要内容,如果未能解决你的问题,请参考以下文章
SSLHandshakeException - java.security.cert.CertPathValidatorException:需要非空策略树且策略树为空