Service Fabric:通过证书使用Azure KeyVault进行身份验证:"KeySet不存在"

Jam*_*zba 3 c# certificate azure azure-keyvault

这是我尝试启用的方案:

我希望通过客户端证书从我的Web服务应用程序(azure服务结构)验证azure keyvault.

这些是我正在遵循的步骤:

  1. 在azure中为我的keyvault添加证书(自签名)
  2. 通过azure powershell下载证书(pfx)
  3. 创建Azure应用程序实例以识别我的应用程序
  4. 将证书与app关联
  5. 为azure app创建服务主体
  6. 授予keyvault主体访问权限

一切看起来都不错 当我启动我的服务(本地服务结构集群),并尝试连接到keyvault以检索我存储在其中的密钥+值时,我收到错误:

CryptographicException:"KeySet不存在"

当我尝试在运行时检查X509Certificate2对象的PrivateKey属性值时,它会抛出相同的异常.

找到证书,并且存在私钥(我通过MMC以及一些命令行工具验证了这一点).

我能错过什么?只有我能想到这个失败的原因是服务架构用户上下文(网络服务,我认为)没有权限查看私钥?它存储在"LocalMachine"证书存储区中的Personal"文件夹(也称为"My")下.据我所知,应用程序应该能够从LocalMachine商店读取而无需特殊权限?

Jam*_*zba 6

另一种授予NETWORK SERVICE用户对证书私钥的权限的更简单方法(比我的其他答案更容易):

  1. 在MMC中打开证书管理单元:WIN+ R- >类型mmc- >文件 - >添加/删除管理单元 - >添加证书(计算机帐户).
  2. 找到您的证书 - >右键单击并选择所有任务/管理私钥
  3. 授予用户Read权限NETWORK SERVICE