Как разрешить keyStore.getEntry: лишний закрытый ключ

avatar
Олександр Козачок
1 июля 2021 в 15:45
125
0
0

Пожалуйста, помогите мне с моей проблемой:

Когда я получаю запись из хранилища ключей *.jks, возникает java.security.UnrecoverableKeyException: избыток закрытого ключа в 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, я получаю такое же исключение в Введите пароль ключа для <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)
Источник
dave_thompson_085
1 июля 2021 в 17:06
0

Учитывая, что вы идентифицируете себя как украинца, я рискну и предположу, что этот ключ принадлежит ДСТУ, и в этом случае см. (s) не может справиться с этим, и вам нужно использовать BouncyCastle. (Что вам в любом случае понадобится, чтобы использовать полученный ключ для чего-либо, поскольку Oracle/OpenJDK не реализует алгоритмы DSTU или ГОСТ.)

Олександр Козачок
4 июля 2021 в 13:26
0

@dave_thompson_085 Спасибо за ответ и рекомендации.

Ответы (0)