“管理私钥”选项缺失。

35

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

当我使用基本HTTP绑定或带传输安全的WSHttp绑定时,一切都正常。但是当我将其更改为NetTcp时,会出现异常:

 CryptographicException 'Keyset does not exist'. 

经过一番搜索,我发现问题可能是由于我的NETSERVICE IIS账户没有访问证书私钥的权限所致。

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


希望这可以帮到你:http://forums.asp.net/t/1832898.aspx - Boomer
谢谢,但是结果一样((( - Alex
将账户权限赋予拥有私钥的文件。我不记得它在哪里,但可以找到。 - zimdanen
如何找到这个文件?在Windows Server 2003中(http://geekswithblogs.net/technetbytes/archive/2011/10/12/147281.aspx),这很容易,但是在Windows Server 2008中我找不到它的位置?也许你知道它在哪里? - Alex
即使以管理员身份运行并使用管理员凭据登录,连接到远程服务器的证书存储似乎无法正常工作。此外,如果选择“导出”,则“导出私钥”将变为灰色 :-( - Simon_Weaver
7个回答

27

前往服务器 -> 点击开始 -> 运行 -> 输入mmc -> 回车 -> 选择本地计算机选项的证书控制台插件 -> 前往控制台根目录 -> 证书-> 个人 -> 证书 -> 选择一个证书 -> 右键单击 -> 前往所有任务 -> 管理私钥-> 添加权限


6
针对“管理私钥”,您应该导入.pfx文件而不是.cer。 - Himalaya Garg

16
在Windows 10版本1809中,似乎只有“管理私钥”选项适用于个人存储区中的证书。解决方法是将证书拖放到该处,根据需要添加权限,并将其拖回所需位置。

12

首次尝试添加证书时,我发现“管理私钥”选项已经消失。最终,我通过以下两个步骤来修正它:

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

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


我也赞同这个观点,我曾经遇到过同样的问题,客户提供给我的是 .cer 文件而不是 .pfx 文件 :) - Squazz

10
我曾经遇到过同样的问题(管理私钥选项丢失)。为了让它出现,我必须使用“计算机帐户”选项添加证书控制台,而不是默认的“我的用户帐户”。

3

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

在我的情况下,尽管配置了证书控制台以访问计算机帐户,我仍然遇到了此问题。 此外,此答案 建议获取 .PFX 证书,但对我来说不是选择。

通过指定在创建证书请求时(我是通过证书 MMC 快照进行的)私钥可导出来解决了该问题:

enter image description here

即使我从公共 CA 收到的证书是 .CER 文件,Manage Private Keys 菜单选项也适用于它。 我对证书了解不多,但我得出结论,当可以导出私钥时,菜单选项才会出现。 根据此答案,或许 .PFX 格式的证书总是允许这样做。 尽管如此,知道其他证书格式也可以这样做仍然是好的。


1
除了使用makecert.exe创建证书时需要使用-pe参数之外,还可能会有另一个问题,请注意导入.pfx文件而不是.cer文件。如果没有.pfx文件,则可以使用其他工具(例如pvk2pfx.exe)创建。

-1
  1. 打开命令提示符(以管理员身份运行)
  2. 输入并执行以下命令,
    certutil -repairstore my "thumbprint" (将 thumbprint 替换为 32 个字符)
  3. 如果成功,您将收到以下消息,
    certUtil: -repairstore 命令已成功完成。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接