我试图从下面的Java代码示例中加载密钥库。
private KeyStore getKeyStore(File keyStore, String keyStorePassword) throws IOException {
KeyStore ks = null;
String tlsStoreType = "PKCS12";
if (keyStore != null && keyStorePassword != null) {
try (InputStream is = new FileInputStream(keyStore)) {
ks = KeyStore.getInstance(tlsStoreType);
ks.load(is, keyStorePassword.toCharArray());
} catch (CertificateException | NoSuchAlgorithmException | KeyStoreException e) {
throw new IOException(e);
}
}
return ks;
}
字符串
但是我得到了异常,“java.io.IOException:Integrity check failed:java.security. NoSuchallenmException:Algorithm HmacPBESHA256 not available”。我要运行上面代码示例的Java版本是openjdk version "11.0.9" 2020-10-20 LTS
。
我使用keytool命令创建密钥存储库,
keytool -genkey -keystore server-keystore.jks -alias server_alias \
-dname "CN=the.server.host.name,OU=whateveryoulike" \
-keyalg "RSA" -sigalg "SHA1withRSA" -keysize 2048 -validity 365
型
这种例外的原因是什么?
1条答案
按热度按时间rxztt3cl1#
出现此异常的原因是,Keystore是在Java版本
openjdk version "17.0.9" 2023-10-17
中创建的,并且正在openjdk version "11.0.9" 2020-10-20 LTS
版本中使用。HmacPBESHA256是JDK后续版本中引入的新算法。因此,在同一Java版本中生成Keystore解决了此问题。