ssl 出现“java.io.IOException:完整性检查失败:java.security. NoSuchException:算法HmacPBESHA256不可用”的原因是什么

hwazgwia  于 5个月前  发布在  Java
关注(0)|答案(1)|浏览(163)

我试图从下面的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


这种例外的原因是什么?

rxztt3cl

rxztt3cl1#

出现此异常的原因是,Keystore是在Java版本openjdk version "17.0.9" 2023-10-17中创建的,并且正在openjdk version "11.0.9" 2020-10-20 LTS版本中使用。HmacPBESHA256是JDK后续版本中引入的新算法。因此,在同一Java版本中生成Keystore解决了此问题。

相关问题