【发布时间】:2019-08-19 15:53:05
【问题描述】:
我需要签署一些字符串消息,但 keyStore.getKey() 返回 null。
我做了什么:
我导入了证书:
keytool -importcert -file cert.cer -keystore cert.jks -alias "cert"
我的java代码:
KeyStore keyStore = KeyStore.getInstance(this.keystoretype);
File keyStoreFile = ResourceUtils.getFile("classpath:kkb/"+keystoreFileName);
FileInputStream keyStoreFileInputStream = new FileInputStream(keyStoreFile.getPath());
keyStore.load(keyStoreFileInputStream, storePassArray);
Signature signature = Signature.getInstance(this.signalgorythm);
PrivateKey privateKey = (PrivateKey)keyStore.getKey(alias, keypassArray);
getKey()返回null,因为JavaKeyStore类中的这一行代码,engineGetKey方法:
public Key engineGetKey(String alias, char[] password)
throws NoSuchAlgorithmException, UnrecoverableKeyException
{
Object entry = entries.get(convertAlias(alias));
if (entry == null || !(entry instanceof KeyEntry)) {
return null;
}
条件“instanceof”返回 false,因为“JavaKeyStore$TrustedCertEntry”类的“entry”对象。 我做错了什么?你能帮帮我吗?
【问题讨论】:
标签: java spring-boot encryption jks