【发布时间】:2015-06-28 09:20:43
【问题描述】:
我正在尝试使用 PKCS#12 证书来签署一些数据。 我在开发机器上成功签署了数据,但是在将应用程序部署到生产机器后,我遇到了一些问题。
在开发机器上我有 Oracle jdk 1.6.0 和 centos 6.2,在生产机器上我有 IBM jdk 1.6.0 和 IBM AIX。
问题是我无法从与认证文件一起加载的 KeyStore 实例中获取带有别名的私钥, 似乎 KeyStore 中没有条目,而我已经打印了认证文件中存在的条目 keytool 命令(所以文件没有问题),这段代码在开发机器上运行也没有任何问题。
感谢任何帮助
代码如下:
KeyStore ks = KeyStore.getInstance("PKCS12");
String certFileAbsPath = this.getClass().getClassLoader().getResource("").getPath() + File.separator + "file.p12";
File file = new File(certFileAbsPath);
FileInputStream fis = new FileInputStream(file);
ks.load(fis, null);
Enumeration aliasEnum = ks.aliases();
String aliasName = null;
while(aliasEnum.hasMoreElements()){
aliasName = (String)aliasEnum.nextElement();
logger.debug("alias: " + aliasName);//nothing is logged!
}
【问题讨论】:
-
定义“已部署”。密钥库是如何进入生产环境的?
-
我有一个“.p12”文件,它与应用程序的 WAR 文件捆绑在一起,并且 WAR 文件被部署到了 tomcat 中。