小编Eri*_*oos的帖子

使用 pfx 文件时,Aure Function App 返回“无法识别提供给包的凭据”

我在共享应用服务计划中有一个 Azure Function 应用,但我不想通过 Azure 门户导入我的证书。这是因为此应用程序服务计划是在组织内共享的,并且这些证书是客户端证书,我想确保我是唯一能够访问它们的人。

因此,我使用 Function 应用程序设置导入它们(并且我将它们移至 Vault 以提高安全性)。

byte[] bytearray; // PFX file, imported from settings using base64 encoding
string password; // Imported from settings
certificates = new X509Certificate2Collection();
certificates.Import(bytearray, password, X509KeyStorageFlags.UserKeySet | X509KeyStorageFlags.PersistKeySet);
Run Code Online (Sandbox Code Playgroud)

使用它们就像这样

var handler = new HttpClientHandler();
handler.ClientCertificateOptions = ClientCertificateOption.Manual;
foreach (var cert in certificates)
handler.ClientCertificates.Add(cert);
Run Code Online (Sandbox Code Playgroud)

但连接被拒绝,并出现错误“无法识别提供给包的凭据”。

我尝试了一些事情

  • 我确信 PFX 已正确插入,因为我可以读取其中的 3 个证书。
  • 只有其中一个证书具有带客户端身份验证的 EKU,其他证书都在那里,因为这是私有生成的证书并且它们代表链。
  • 我尝试先将 PFX 保存到本地文件存储。我认为这可能是一个选项,因为我知道所有证书都会首先通过本地证书存储,因为屏蔽私钥的安全隐患,并且该存储保持对 PFX 文件的句柄打开(磁盘上可能存在也可能不存在) 。那行不通。
  • 我知道证书没问题,因为在执行此“预期方式”时,我可以在我的函数应用程序上使用它们,在 Azure 上上传,使用 WEBSITE_LOAD_CERTIFICATES 将它们路由到应用程序,然后在代码中从商店中选择它们(使用 X509Store班级)。

ssl azure .net-core azure-functions

6
推荐指数
1
解决办法
1430
查看次数

标签 统计

.net-core ×1

azure ×1

azure-functions ×1

ssl ×1