Reputation: 31
I have a Azure Function In Java. Using Managed Identity and Key Vault reference, I have added a configuration in function app to access the key vault secret and certificate. The secret is referenced correctly and I am able to access its value in Azure Function.
When accessing the certificate from Azure Key Vault, using System.getenv(, I get a string which is encoded. How can I convert that string into a valid certificate in pfx or pem format.
Is there any other way to securely access certificate from Azure Key Vault in the Azure function using Java as runtime language.
Upvotes: 0
Views: 956
Reputation: 3137
As per our discussion in the comment section, to convert the base 64 string into a valid certificate in pfx or pem format, please use below code :
byte[] encodedCert = Base64.getDecoder().decode(certB64.replaceAll(X509Factory.BEGIN_CERT, "").replaceAll(X509Factory.END_CERT, ""));
ByteArrayInputStream inputStream = new ByteArrayInputStream(encodedCert);
X509Certificate cert = null;
try {
CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
cert = (X509Certificate) certFactory.generateCertificate(inputStream);
}
catch (CertificateException e) {
e.printStackTrace();
}
You can refer this to retrieve a certificate from keyvault : https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/keyvault/azure-security-keyvault-certificates#retrieve-a-certificate
Upvotes: 0