Tho*_*ler 6 azure-keyvault azure-web-app-service azure-functions
我正在尝试按照此处所述在我的 Azure 函数 (v1) 中使用 Key Vault 引用。它适用于机密,但不适用于证书。
文档根本没有提到证书,所以也许它们根本不受支持?我希望将其作为 base64 字符串。
我正在使用的示例应用程序设置: @Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/certificates/ApiClientAuthenticationCertificate/f9580a1f5a0c4a6ca65ea089976ca2b0)
原来证书在/secrets路径下可用。我上面的例子应该是这样的:@Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/ApiClientAuthenticationCertificate/f9580a1f5a0c4a6ca65ea089976ca2b0)。
然后,设置值将是 PFX 格式的证书的 base64 字符串。在 Azure 函数中像这样实例化:
byte[] certBytes = Convert.FromBase64String(base64Pfx);
var cert = new X509Certificate2();
cert.Import(certBytes, String.Empty, X509KeyStorageFlags.MachineKeySet);
Run Code Online (Sandbox Code Playgroud)
我使用自签名证书通过应用程序权限连接到 SharePoint。
配置中对 Key Vault 值的引用设置如下:
@Microsoft.KeyVault(SecretUri=https://keyvaultname.vault.azure.net/certificates/NameOfMyCertificate/id)
秘密 Uri 可以轻松地从 Key Vault 获取。它称为证书标识符,位于 Azure Key Vault 中证书的属性中。
为了使 Azure Function 能够访问 Key Vault 中的证书,它应该激活托管标识以及获取证书的正确访问策略。
配置变量中加载的值确实是一个 base64 字符串。我用来加载证书的代码如下:
public static X509Certificate2 ReadCertificateFromBase64StringPfx(string base64Pfx)
{
byte[] certBytes = Convert.FromBase64String(base64Pfx);
X509Certificate2Collection collection = new X509Certificate2Collection();
collection.Import(certBytes, string.Empty, X509KeyStorageFlags.PersistKeySet);
return collection[0];
}
Run Code Online (Sandbox Code Playgroud)
如果 PFX 中有多个证书,则需要更改返回值并从集合中选择正确的证书。
注意:您还必须在 Azure 函数的配置中添加 WEBSITE_LOAD_USER_PROFILE=1,否则您将收到一条错误,指出导入函数无法找到该文件。检查这个来源。
| 归档时间: |
|
| 查看次数: |
2314 次 |
| 最近记录: |