Почему keyStore.aliases() пуст для pkcs12

Я пытаюсь загрузить PrivateKey из файла.p12 с помощью этого кода:

    Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
    java.security.KeyStore keyStore = KeyStore.getInstance("PKCS12", "BC");
    keyStore.load(new FileInputStream(new File("my_domain_com.p12")), password);
    keyStore.aliases().hasMoreElements(); //this is false
    java.security.PrivateKey privateKey = (PrivateKey) keyStore.getKey("SomeAlias", password);  

Я пытаюсь найти причину, по которой нет псевдонимов. Но я не могу найти. В чем может быть причина пустого псевдонима? Я хочу получить закрытый ключ и расшифровать текст, используя этот ключ. Есть ли другие apporach?

У меня также есть файл.cer, но я не уверен, что я должен использовать вместе.

1 ответ

Возможно ли, что в хранилище ключей вообще ничего нет? Используйте Java keytool Команда для проверки.

>keytool -list -v -keystore test.p12 -storetype PKCS12
Enter keystore password:

Keystore type: PKCS12
Keystore provider: SunJSSE

Your keystore contains 1 entry

Alias name: test_alias
Creation date: Sep 3, 2013
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
...
...

Если в хранилище ключей есть записи, вы должны увидеть "Псевдоним" для каждого из них. Если в хранилище ключей нет записей, вы увидите "Ваше хранилище ключей содержит 0 записей", и вам нужно будет импортировать их в хранилище ключей.

Кроме того, при шифровании вы должны шифровать с помощью чужого открытого ключа, а они будут расшифровывать с помощью своего закрытого ключа. И они шифруются вашим открытым ключом, который вы расшифровываете своим закрытым ключом.

Другие вопросы по тегам