【问题标题】:'MANAGE PRIVATE KEYS' option missing缺少“管理私钥”选项
【发布时间】:2012-12-29 13:32:18
【问题描述】:

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

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

 CryptographicException 'Keyset does not exist'. 

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

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

【问题讨论】:

  • 希望对您有所帮助:forums.asp.net/t/1832898.aspx
  • 谢谢,但结果相同(((
  • 为拥有私钥的文件赋予账户权限。不要立即记住它存在于哪里,但它是可以找到的。
  • 如何找到这个文件?在 Windows server 2003 (geekswithblogs.net/technetbytes/archive/2011/10/12/147281.aspx) 中这很容易,但在 Windows server 2008 中我找不到它的位置?也许你知道它在哪里?
  • 在连接到远程服务器的证书存储时似乎不起作用,即使以管理员身份运行并使用管理员凭据登录也是如此。此外,如果您选择“导出”,则“导出私钥”将显示为灰色:-(

标签: c# wcf wcf-security x509certificate


【解决方案1】:

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

【讨论】:

  • 只是添加 -> 对于“管理私钥”,您应该导入 .pfx 文件而不是 .cer
【解决方案2】:

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

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

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

【讨论】:

  • 我会支持这个,有同样的问题,从客户那里得到一个 .cer 文件而不是 .pfx :)
【解决方案3】:

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

【讨论】:

    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

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

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

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

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

        【讨论】:

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

          【讨论】:

            猜你喜欢
            • 2014-10-09
            • 2021-10-21
            • 1970-01-01
            • 2012-07-05
            • 1970-01-01
            • 2017-08-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多