13

我的证书存储在“证书(本地计算机)”下的自定义存储中,而不是“个人”下。

通常,如果证书位于个人下,我只需使用C:>netsh http add sslcert ipport:0.0.0.0: certash= appid= certstorename=MY

其中,如果未指定,则默认情况下已假定 certstorename=MY。

这工作正常,直到我们被要求将证书存储在自定义存储中,而不是现有的个人、受信任的人、受信任的发布者等等等。

  • 如果我们将新存储称为“我的证书存储”,那么新的 netsh 命令会是什么样子?
  • “MY”一词如何映射到“Personal”商店?有没有映射这些的字典?

我检查了 System.Security.Cryptography.X509Certificates 命名空间,并且存在一个名为 StoreName 的枚举,具有以下值:

  • AddressBook - 其他用户的 X.509 证书存储。
  • AuthRoot - 第三方证书颁发机构 (CA) 的 X.509 证书存储。
  • CertificateAuthority - 中间证书颁发机构 (CA) 的 X.509 证书存储。
  • 不允许 - 已撤销证书的 X.509 证书存储。
  • My - 个人证书的 X.509 证书存储。
  • Root - 受信任的根证书颁发机构 (CA) 的 X.509 证书存储。
  • TrustedPeople - 直接受信任的人员和资源的 X.509 证书存储。
  • TrustedPublisher - 直接受信任的发布者的 X.509 证书存储。

我在 netsh 命令上尝试了所有这些作为 certstorename,但我总是收到此错误:

SSL 证书添加失败,错误:1312 指定的登录会话不存在。它可能已经被终止。

4

4 回答 4

1

你试图做的似乎是正确的。对于与您的症状完全匹配的问题,您能否在应用修补程序http://support.microsoft.com/kb/981506后重试。

于 2011-08-25T22:34:30.763 回答
0

一个巨大的缺陷是,即使PrivateKey 没有正确保存,私钥图标仍然会出现在 mmc 中,并且会显示“有一个与此证书关联的私钥”。要确定私钥是否被正确导入,

  • 右键单击 C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys 并记下文件夹中有多少文件(这是保存私钥的地方)。
  • 导入 pfx 文件/但是您将证书/密钥添加到商店
  • 再次检查该文件夹的文件数,应该比以前多1个文件

您可以尝试使用 open-ssl 之类的工具使用新创建的自签名证书进行测试。被困在这个问题上几个星期,直到我发现这个 stackoverflow 帖子,在 Root 中插入证书(带私钥),LocalMachine 证书存储在 .NET 4 中失败

另一个问题是确保证书在本地计算机(而不是用户)中,但看起来你已经搞定了那部分。

于 2013-02-20T08:58:22.103 回答
0

当证书安装在我的本地用户存储而不是本地机器存储中时,我遇到了这个问题。安装在localMachine/my清除它。

于 2013-12-12T16:41:17.997 回答
0

打开您的证书并仔细检查它是否真的包含 PrivateKey。根据您导出/导入它的方式,它可能已被截断为仅公开的数据。

在资源管理器中,只需双击并检查“此证书包含私钥”警告标签是否在第一个选项卡上可见,就在到期日期下方

于 2012-07-12T11:02:23.330 回答