在Java中读取/加载jks cert文件将返回空别名

问题描述 投票:0回答:1

我正在尝试使用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的所有信息(别名和值)。

谁能帮我理解我在这里缺少什么?

java certificate keystore
1个回答
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");
}
© www.soinside.com 2019 - 2024. All rights reserved.