代码之家  ›  专栏  ›  技术社区  ›  Thomas Kappler

证书的Azure功能密钥保险库参考?

  •  0
  • Thomas Kappler  · 技术社区  · 7 年前

    here . 它适用于机密,但不适用于证书。

    文档根本没有提到证书,所以可能根本不支持它们?我希望它能成为base64字符串。

    我正在使用的示例应用程序设置: @Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/certificates/ApiClientAuthenticationCertificate/f9580a1f5a0c4a6ca65ea089976ca2b0)

    0 回复  |  直到 7 年前
        1
  •  5
  •   Thomas Kappler    7 年前

    事实证明,证书在 /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);
    
        2
  •  1
  •   Luis Art Guerra    5 年前

    配置中对密钥Vault值的引用设置如下:

    秘密Uri很容易从密钥库中获取。它被称为 证书标识符 ,并位于Azure密钥库中证书的属性中。

    拿到证书 .

    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];  
        }
    

    注意:您还必须在Azure函数的配置中添加网站\u LOAD\u USER\u PROFILE=1,否则您将收到一个错误,说明导入函数无法找到该文件。检查 this source

    推荐文章