首页 > 解决方案 > 如何解决 keyStore.getEntry :多余的私钥

问题描述

请帮我解决我的问题:

当我从 keystore *.jks 获得一个条目时,出现 java.security.UnrecoverableKeyException: extra private key at keyStore.getEntry 我的证书不是自签名的。官方机构为我提供了一个 .jks。当我收到证书时,我只设置了一个密码。

        FileInputStream is = new FileInputStream(keyFile);
        KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
        String decryptedPasswd = cryptoProvider.decryptBase64(privatePasswd);
        keyStore.load(is, decryptedPasswd.toCharArray());
        Enumeration e = keyStore.aliases();
        String alias = (String) e.nextElement();
        KeyStore.ProtectionParameter protPassword =
                new KeyStore.PasswordProtection(decryptedPasswd.toCharArray());
        KeyStore.PrivateKeyEntry privateKeyEntry = (KeyStore.PrivateKeyEntry)
                keyStore.getEntry(alias, protPassword);

当我尝试通过 keytool 更改密钥库的类型时,我在Enter key password for <pb_sign_>得到相同的异常

keytool -importkeystore -srckeystore pb_.jks -destkeystore new-store.p12 -deststoretype PKCS12
Importing keystore pb_.jks to new-store.p12...
Enter destination keystore password:
Re-enter new password:
Enter source keystore password:
Enter key password for <pb_sign_>
keytool error: java.security.UnrecoverableKeyException: excess private key

java --version
java 11.0.11 2021-04-20 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.11+9-LTS-194)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.11+9-LTS-194, mixed mode)

标签: keystorekeytool

解决方案


推荐阅读