java - keystore.load() 有效,但 loadKeyMaterial() 对于同一个密钥库失败
问题描述
我正在尝试对需要证书的 Axis2 API 进行 API 调用。我将它导入到位于 /lib/security 中的 java 密钥库。我通过几种方法验证了证书已成功导入(方法也在下面的代码中,证书不为空)。
我可以使用默认密码从密钥库获取证书。但是当我尝试为 sslContext 使用相同的密钥库和密码时,我得到UnrecoverableKeyException:无法恢复密钥异常。有人可以帮助我吗?
final char sep = File.separatorChar;
File dir = new File(System.getProperty("java.home") + sep + "lib" + sep + "security");
File file = new File(dir, "cacerts");
InputStream localCertIn = new FileInputStream(file);
String password = "changeit" ;
KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
keystore.load(localCertIn, password.toCharArray());
String alias = "alias name";
X509Certificate certificate = (X509Certificate)keystore.getCertificate(alias);
//Certificate is not null
SSLContext sslContext = SSLContexts.custom()
.loadKeyMaterial(keystore, password.toCharArray())
.build();
//Throws the following error