1

我有一个 Base-64 编码的 X.509 (.CER) 证书,它在下面的 java 代码中导致 NullPointerException。导致它的行是PublicKey pubKey = pubCert.getPublicKey();

有没有办法验证 myfile.keystore 是否具有“xyz”证书?

final FileInputStream keyFile = new FileInputStream(filePath
                    + "myfile.keystore");
final KeyStore keyStore = KeyStore.getInstance("JKS");
String storepass = "mypass";
keyStore.load(keyFile, storepass.toCharArray());
Certificate pubCert = keyStore.getCertificate("xyz");
PublicKey pubKey = pubCert.getPublicKey();
4

4 回答 4

1

尝试keytool应该在 JRE 或 JDK bin 目录中的命令,请参见下面的输出:

@raspbmc:~$ /opt/jdk1.8.0/bin/keytool  -list -help
keytool -list [OPTION]...

Lists entries in a keystore

Options:

 -rfc                            output in RFC style
 -alias <alias>                  alias name of the entry to process
 -keystore <keystore>            keystore name
 -storepass <arg>                keystore password
 -storetype <storetype>          keystore type
 -providername <providername>    provider name
 -providerclass <providerclass>  provider class name
 -providerarg <arg>              provider argument
 -providerpath <pathlist>        provider classpath
 -v                              verbose output
 -protected                      password through protected mechanism

Use "keytool -help" for all available commands

参考:

http://docs.oracle.com/javase/1.4.2/docs/tooldocs/windows/keytool.html

于 2013-02-01T00:31:19.980 回答
1

您能否确认密钥库在类路径中?

如上所述,如果您运行keytool -list -v -keystore .jks,您将看到安装在密钥库中的证书。

如果您在密钥库中看到您的证书,但您仍然遇到错误,这可能是因为证书未正确链接,我过去曾遇到过这个问题。如果您仍然遇到问题,请粘贴上述命令的输出,这将有助于我们解决您的问题

谢谢

于 2013-02-01T01:35:26.350 回答
0

使用工具打开密钥库,例如 eclipse 插件或使用http://jxplorer.org/downloads/index.html

于 2013-02-01T00:28:36.870 回答
0

编辑此行

PublicKey pubKey = pubCert.getPublicKey();

PublicKey pubKey = keyStore.getPublicKey();

于 2015-03-11T06:36:28.223 回答