我正在使用Windows 2008R2下IIS 7.5上托管的Transport Security开发WCF服务。我有一个在IIS 7.5中生成的证书,该证书存储在本地文件夹中。
当我使用BasicHttpBinding或WSHttpBinding与Transport Security时 - 一切正常。但当我将其更改为NetTcp时,我得到一个例外:
CryptographicException 'Keyset does not exist'.
经过一些谷歌搜索后,我发现问题可能是因为我的NETSERVICE IIS帐户没有预先设置我的证书的私钥。
解决方案是通过右键单击我的证书并选择“MANAGE PRIVATE KEYS”选项来设置MMC中的访问权限。但是在选择菜单中没有这样的选项!证书是在管理员帐户下创建的,我打开它 - 它说它有私钥。我做错了什么?
答案 0 :(得分:17)
转到服务器 - >点击开始 - >运行 - > type mmc - >输入 - >选择带有本地计算机选项的证书管理单元 - >转到控制台Root->证书 - > Personal->证书 - >选择证书 - >右键单击 - >转到所有任务 - >管理私钥 - >添加权限
答案 1 :(得分:7)
管理私钥选项丢失了。最后通过以下两个步骤纠正它。
以管理员身份登录MMC。文件 - >添加或删除管理单元>选择证书 - >单击“添加”按钮。这将打开一个对话框。此管理单元将始终管理证书:选择计算机帐户。选择要管理此管理单元的计算机:选择“本地计算机”。单击完成。点击确定。
在个人文件夹中导入证书(所有任务 - >导入)时,请确保导入.pfx文件而不导入.cer文件。
答案 2 :(得分:5)
我遇到了同样的问题(缺少管理私钥选项)。为了使其显示,我必须使用“计算机帐户”选项而不是默认的“我的用户帐户”添加“证书”管理单元
答案 3 :(得分:1)
还有一个问题,所以我会提到它。使用makecert.exe创建证书时,除-pe
参数外,请确保导入.pfx
文件,而不是.cer
。如果没有.pfx
文件,请使用其他工具(例如pvk2pfx.exe
)创建。
答案 4 :(得分:0)
就我而言,尽管配置了“证书”管理单元以访问COMPUTER帐户,但我遇到了此问题。此外,在this answer中获取.PFX证书的建议对我来说不是一个选择。
我通过在创建证书请求时指定私钥可导出(我通过证书MMC管理单元执行)来解决问题:
即使我从公共CA获得的证书是.CER
文件,也可以使用“管理私钥”菜单选项。我对证书知之甚少,但我得出结论,只有在导出私钥时才会出现菜单选项。根据{{3}},.PFX格式中的证书总是允许这样做。尽管如此,知道其他证书格式是可行的很好。
答案 5 :(得分:0)
答案 6 :(得分:0)
在Windows 10 1809中,管理私钥选项似乎仅可用于个人存储中的证书。解决方法是将证书拖放到此处,根据需要添加权限,然后将其拖回您需要的位置。