我正在尝试使用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 它列出了控制台中证书的所有信息(别名和值)。
任何人都可以帮助我理解我在这里缺少什么吗?
答案 0 :(得分:1)
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");
}