3

我们有一个应用程序需要访问证书的私钥。我们还有一个设置证书的 Nightlybuild(使用 certmgr 从 pfx 文件导入它)。只要证书的设置和证书的访问在相同的登录 Windows 用户 (Windows7) 下运行,这真的很好。

现在,我们想介绍一个测试(在 Nightlybuild 期间自动执行),另一个用户将调用需要访问证书私钥的程序,而我正在努力使用 MMC 控制台 -> 所有任务 -> 管理私钥。

对我来说,看起来我可以更改“管理私钥”的安全设置中的任何内容,但它与证书的真实 ACL 没有任何关系。我可以将问题简化为以下手动步骤:

  1. User1 将证书导入“本地计算机/我的”(根中存在正确的 CA)
  2. User1 在 MMC 中选择证书,点击“Manage Private Keys”并添加具有完全控制权限的“Users”(组)和“User2”(用户)。
  3. 用户 1 注销
  4. 用户 2 登录
  5. 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 我们真的希望两个用户能够读取证书的私钥?

感谢您的帮助迈克尔

4

1 回答 1

0

我刚刚遇到了同样的问题。我试图以未在系统上导入证书的用户身份使用代码签名证书。最初导入证书时,并没有导入它,以便可以导出私钥。

我能够通过以下方式解决我们的问题:

  1. 从证书存储中删除现有证书
  2. 再次导入证书,同时确保它允许导出私钥
  3. 使用管理私钥设置权限,以便第二个用户可以访问私钥

在这些步骤之后,我的第二个用户能够正确使用代码签名证书。

于 2021-07-01T15:54:08.677 回答