Почему 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 записей", и вам нужно будет импортировать их в хранилище ключей.
Кроме того, при шифровании вы должны шифровать с помощью чужого открытого ключа, а они будут расшифровывать с помощью своего закрытого ключа. И они шифруются вашим открытым ключом, который вы расшифровываете своим закрытым ключом.