问题描述
我在 Azure Key Vault 中有一个 .pfx 证书。我需要从中检索私钥以解密 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());