30

我正在开发 WCF 服务,其传输安全托管在 Windows 2008R2 下的 IIS 7.5 上。我有一个证书,在 IIS 7.5 中生成,存储在本地文件夹中。

当我使用具有传输安全性的 BasicHttpBinding 或 WSHttpBinding 时 - 一切正常。但是当我将它更改为 NetTcp 时,我得到了一个异常:

 CryptographicException 'Keyset does not exist'. 

经过一番谷歌搜索后,我发现问题可能是因为我的 NETSERVICE IIS 帐户对我的证书的私钥没有权限。

解决方案可能是通过右键单击我的证书并选择“管理私钥”选项来设置 MMC 中的访问权限。但是选择菜单中没有这样的选项!!!证书是在管理员帐户下创建的,在我打开它的地方 - 它说它有私钥。我做错了什么?

4

7 回答 7

27

转到服务器->单击开始->运行->键入mmc->输入->选择带有本地计算机选项的证书管理单元->转到控制台根目录->证书->个人->证书->选择证书->右键单击-> 转到所有任务-> 管理私钥-> 添加权限

于 2014-03-19T03:48:27.753 回答
10

当我第一次尝试添加证书时,缺少管理私钥选项。最后通过以下两个步骤纠正它。

  1. 以管理员身份运行 MMC。文件-> 添加或删除管理单元-> 选择证书-> 单击添加按钮。这将打开一个对话框。此管理单元将始终管理以下证书:选择计算机帐户。选择您希望此管理单元管理的计算机:选择本地计算机。单击完成。单击确定。

  2. 当您在个人文件夹中导入证书(所有任务 -> 导入)时,请确保您导入的是 .pfx 文件而不是 .cer 文件。

于 2016-06-16T19:36:45.857 回答
9

我遇到了同样的问题(缺少管理私钥选项)。为了让它出现,我必须使用“计算机帐户”选项而不是默认的“我的用户帐户”添加证书管理单元

于 2013-07-08T20:43:32.660 回答
8

在 Windows 10 1809 中,管理私钥选项似乎仅适用于个人存储中的证书。解决方法是将证书拖放到那里,根据需要添加权限并将其拖回您需要的位置。

于 2018-12-06T12:16:15.663 回答
1

可能还有另一个问题,所以我会提到它。除了-pe使用 makecert.exe 创建证书时的参数外,请确保您导入的是.pfx文件,而不是.cer. 如果没有.pfx文件,请使用其他工具,例如pvk2pfx.exe创建。

于 2016-02-09T15:40:57.203 回答
1

管理私钥选项仅适用于具有可导出私钥的证书

就我而言,尽管配置了证书管理单元以访问 COMPUTER 帐户,但我还是遇到了这个问题。此外,在此答案中获得 .PFX 证书的建议对我来说不是一个选择。

我通过在创建证书请求时指定私钥可导出来解决了这个问题(我正在通过证书 MMC 管理单元执行此操作):

在此处输入图像描述

即使我从公共 CA 获得的证书是一个.CER文件,管理私钥菜单选项也可用于它。我对证书了解不多,但我得出的结论是,只有在可以导出私钥时才会出现菜单选项。根据这个答案,也许 .PFX 格式的证书总是允许这样做。尽管如此,很高兴知道其他证书格式也是可能的。

于 2018-03-08T20:00:36.120 回答
0
  1. 打开命令提示符(以管理员身份运行)
  2. 输入并执行命令,
    certutil -repairstore my "thumbprint"(将指纹替换为 32 个字符)
  3. 如果成功,您将收到消息
    certUtil : -repairstore 命令成功完成。
于 2018-11-21T13:28:34.743 回答