首页 > 解决方案 > 使用 Java 从 Azure Function 访问 Key Vault 证书

问题描述

我在 Java 中有一个 Azure 函数。使用托管标识和密钥保管库参考,我在函数应用中添加了一个配置来访问密钥保管库机密和证书。正确引用了秘密,我可以在 Azure 函数中访问它的值。

从 Azure Key Vault 访问证书时,使用 System.getenv(,我得到一个编码的字符串。如何将该字符串转换为 pfx 或 pem 格式的有效证书。

有没有其他方法可以使用 Java 作为运行时语言从 Azure 函数中的 Azure Key Vault 安全访问证书。

标签: azureazure-functionsazure-keyvaultazure-java-sdk

解决方案


根据我们在评论部分的讨论,要将 base 64 字符串转换为 pfx 或 pem 格式的有效证书,请使用以下代码:

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(); 
}

您可以参考此内容从 keyvault 检索证书:https ://github.com/Azure/azure-sdk-for-java/tree/main/sdk/keyvault/azure-security-keyvault-certificates#retrieve-a-certificate


推荐阅读