我们有一个应用程序需要访问证书的私钥。我们还有一个设置证书的 Nightlybuild(使用 certmgr 从 pfx 文件导入它)。只要证书的设置和证书的访问在相同的登录 Windows 用户 (Windows7) 下运行,这真的很好。
现在,我们想介绍一个测试(在 Nightlybuild 期间自动执行),另一个用户将调用需要访问证书私钥的程序,而我正在努力使用 MMC 控制台 -> 所有任务 -> 管理私钥。
对我来说,看起来我可以更改“管理私钥”的安全设置中的任何内容,但它与证书的真实 ACL 没有任何关系。我可以将问题简化为以下手动步骤:
- User1 将证书导入“本地计算机/我的”(根中存在正确的 CA)
- User1 在 MMC 中选择证书,点击“Manage Private Keys”并添加具有完全控制权限的“Users”(组)和“User2”(用户)。
- 用户 1 注销
- 用户 2 登录
- User2打开MMC,点击“Manage Private Keys”-->Error,MMC控制台显示“Cannot find the certificate and private key for decryption”。
虽然 User2 应该有权访问私钥。所以在我看来,MMC 中的 User1(User1 和 User2 都在 Administrators 组中)的设置没有任何意义,并且被访问私钥的 .NET API 忽略了?
有谁知道为什么会这样以及我如何说服 Windows 我们真的希望两个用户能够读取证书的私钥?
感谢您的帮助迈克尔