Получение закрытого ключа из хранилища ключей Azure в приложении Spring Boot
У меня есть сертификат .pfx в Azure Key Vault. Мне нужно получить из этого закрытый ключ, чтобы расшифровать строковое значение в моем приложении Spring Boot.
Я использовал библиотеку сертификатов azure-spring-boot-starter-keyvault-Certificates для загрузки сертификата в хранилище ключей Java, похоже, все работает нормально.
Я не понимаю, как получить часть закрытого ключа. Есть какие-нибудь подсказки к тому, что я делаю неправильно?
KeyStore azureKeyVaultKeyStore = KeyStore.getInstance("AzureKeyVault");
KeyVaultLoadStoreParameter parameter = new KeyVaultLoadStoreParameter(
System.getProperty("azure.keyvault.uri"),
System.getProperty("azure.keyvault.tenant-id"),
System.getProperty("azure.keyvault.client-id"),
System.getProperty("azure.keyvault.client-secret"));
azureKeyVaultKeyStore.load(parameter);
// returns null!
PrivateKey privateKey = (PrivateKey) azureKeyVaultKeyStore.getKey(environment.getProperty("azure.keyvault.alias"), "".toCharArray());
// decrypt value
Cipher c = Cipher.getInstance(privateKey.getAlgorithm());
c.init(Cipher.DECRYPT_MODE, privateKey);
c.update(DatatypeConverter.parseBase64Binary(cryptedMsg));
String decryptedMessage = new String(c.doFinal());
Тестирование с тем же сертификатом на моей машине работает следующим образом:
KeyStore keyStore = KeyStore.getInstance("pkcs12");
keyStore.load(new FileInputStream(filename), password.toCharArray());
PrivateKey privateKey = (PrivateKey) keyStore.getKey(alias, password.toCharArray());