【发布时间】:2018-04-08 11:06:47
【问题描述】:
这是我尝试启用的场景:
我希望通过客户端证书从我的 Web 服务应用程序(azure 服务结构)向 azure keyvault 进行身份验证。
这些是我正在遵循的步骤:
- 在 Azure 中向我的密钥库添加证书(自签名)
- 通过 azure powershell (pfx) 下载证书
- 创建 Azure 应用实例以识别我的应用
- 将证书与应用关联
- 为 azure 应用创建服务主体
- 授予对 keyvault 的主体访问权限
一切看起来都不错。当我启动我的服务(本地服务结构集群)并尝试连接到 keyvault 以检索我存储在其中的密钥 + 值时,我收到错误:
CryptographicException: "KeySet 不存在"
当我尝试在运行时检查 X509Certificate2 对象的 PrivateKey 属性值时,它会引发相同的异常。
找到证书,并且存在私钥(我通过 MMC 以及一些命令行工具验证了这一点)。
我会错过什么?我能想到的唯一原因是服务结构用户上下文(我认为是网络服务)没有查看私钥的权限?它存储在“LocalMachine”证书存储中,位于 Personal”文件夹(也称为“My”)。据我所知,应用程序应该能够在没有特殊权限的情况下从 LocalMachine 存储中读取?
【问题讨论】:
-
不关注这一点——您使用的是 Azure Service Fabric 还是本地 Service Fabric?
标签: c# azure certificate azure-keyvault