83

我正在尝试为我的 asp.net 网站创建客户端证书身份验证。

为了创建客户端证书,我需要先创建一个证书颁发机构:

makecert.exe -r -n “CN=我的个人 CA” -pe -sv MyPersonalCA.pvk -a sha1 -len 2048 -b 01/01/2013 -e 01/01/2023 -cy authority MyPersonalCA.cer

然后,我必须将它导入 IIS 7,但由于它接受 .pfx 格式,我先转换它

pvk2pfx.exe -pvk MyPersonalCA.pvk -spc MyPersonalCA.cer -pfx MyPersonalCA.pfx

导入 MyPersonalCA.pfx 后,我尝试将 https 站点绑定添加到我的网站并选择上述作为 SSL 证书,但我收到以下错误:

在此处输入图像描述

有什么建议么?

4

22 回答 22

83

我遇到了同样的问题,但以不同的方式修复了它。我相信我使用的帐户从我最初尝试设置证书到我返回完成工作的时间发生了变化,从而产生了问题。问题是什么,我不知道,但我怀疑它与当前用户的某种哈希有关,并且在某些情况下不一致,因为用户被修改或重新创建等。

为了解决这个问题,我从 IIS 和证书管理单元(针对当前用户和本地计算机)中删除了相关证书的所有引用:

IIS 证书

mmc.exe --> 添加/删除管理单元,选择证书,然后选择本地计算机或当前用户

接下来,我将 *.pfx 文件导入到 MMC 中的 certs 管理单元中,并将其放置在 Local Computer\Personal 节点中:

  1. 右键单击个人下的证书节点(在本地计算机下作为根)
  2. 所有任务 -> 导入
  3. 通过向导导入您的 *.pfx

从那时起,我能够返回 IIS 并在服务器证书中找到它。最后,我访问了我的站点,编辑了绑定并选择了正确的证书。它之所以有效,是因为用户在整个过程中都是一致的。

对于另一个答案中提到的这一点,您不必将其标记为可导出,因为这是一个主要的安全问题。您实际上允许任何可以使用类似权限进入该框的人随身携带您的证书并将其导入其他任何地方。显然这不是最优的。

于 2014-09-15T18:54:52.797 回答
64

安全警告:复选框的真正含义是证书可以被不应该读取的用户读取。比如运行IIS工作进程的用户。在生产中使用另一个答案

也发生在我身上,并通过确保在导入时选中“允许导出此证书”来修复它:

                                            在此处输入图像描述

(感谢这篇文章!)

于 2013-10-18T14:09:49.043 回答
10

这一定是某种 IIS 错误,但我找到了解决方案。

1-从 IIS导出MyPersonalCA.pfx 。

2-将其转换为.pem

openssl pkcs12 -in MyPersonalCA.pfx -out MyPersonalCA.pem -nodes

3-将其转换回.pfx

openssl pkcs12 -export -in MyPersonalCA.pem -inkey MyPersonalCA.pem -out MyPersonalCA.pfx

4-将其导入IIS

于 2013-02-19T11:04:14.520 回答
8

由于错误地将证书导入当前用户个人证书存储,我们遇到了同样的问题。将其从当前用户个人存储中删除并将其导入本地计算机个人证书存储解决了该问题。

于 2015-08-17T15:42:40.330 回答
7

可能没有人再关心这个了,但我只是在我的 IIS 7 网站绑定中遇到了这个问题。我修复它的方法是去证书颁发机构并找到颁发给有问题的服务器的证书。我验证了请求证书的用户帐户。然后,我使用该帐户使用 RDP 登录 IIS 服务器。我只能使用该帐户重新绑定 https 协议。不需要导出、重新发布或扩展更改黑客。

于 2013-12-26T14:21:47.627 回答
5

在我们的案例中,出现此问题是因为我们已在虚拟机中安装了证书并制作了它的映像以供进一步使用。

从之前创建的映像创建另一个 VM 时,证书会发送消息。

为避免这种情况,请务必在安装的每个新 VM 上安装证书。

于 2013-11-07T13:45:36.367 回答
4

与其从 IIS 导入证书,不如从 MMC 导入证书。然后转到 IIS 进行绑定。

于 2016-06-07T09:26:00.360 回答
4

根据MSDN 博客文章,当当前用户帐户无权访问文件夹“ C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys”下的私钥文件时,可能会发生这种情况。显然,这可以通过授予用户帐户/用户组对上述文件夹的完全访问权限来解决。

我遇到了同样的问题,并且能够通过简单地重新导入 .pfx 文件并选中允许导出此证书复选框来解决它。

进口证书

但是,此方法会带来安全风险 - 因为任何有权访问您的 IIS 服务器的用户都可以使用私钥导出您的证书。

就我而言,只有我可以访问我的 IIS 服务器 - 因此这不是一个巨大的风险。

于 2019-02-11T10:57:08.913 回答
3

由于在导出 PKCS #12 证书期间错误的 openssl 命令行,我收到此错误。-certfile 密钥错误。我再次导出证书并成功导入。

于 2014-01-20T12:45:21.717 回答
3

伙计们,在尝试了几乎所有单一的解决方案都无济于事后,我最终找到了“指定登录会话不存在”的解决方案。它可能已经被终止了。” 使用 https 时

  1. 使用正确的私钥验证您的 pfx 证书是否健康

  2. 运行 certutil 并找到 certs 'unique Container name' - 我使用了 certutil -v -store my

3.导航到 C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys 并找到与上面找到的容器名称对应的系统文件

  1. 检查权限并确保“系统”对文件具有完全控制权。

应用后,我检查了 IIS,并且能够正确地应用到 https

于 2021-01-07T04:02:00.633 回答
2

我遇到过同样的问题。通过从个人商店(有人放入其中)和虚拟主机中删除证书来解决。全部通过 IIS 管理器完成。然后我再次添加到虚拟主机商店(检查了所有内容),我可以再次使用 HTTPS...

于 2015-06-10T07:36:16.460 回答
2

就我而言,这是因为 World Wide Publishing Service 用户没有证书的权限。安装证书后,访问 MMC 中的证书模块并右键单击有问题的证书。从“所有任务”菜单中选择“管理私钥...”并添加上述用户。就我而言,这是 SYSTEM 用户。

于 2015-09-02T07:01:28.097 回答
1

尝试为我的开发机器绑定 localhost pfx 证书时出现此错误。在我尝试上述任何方法之前,先尝试一些更简单的方法。

  1. 关闭了我打开的任何 localhost 开发站点。
  2. 停止了我的 IIS 服务器并关闭了管理器
  3. 以管理员身份运行管理器
  4. 添加了我所有的 https 绑定,这次没有错误或问题。
  5. 重新启动 iis

之后一切似乎都正常了。

于 2017-05-04T20:52:20.553 回答
1

我在绑定证书时遇到了同样的错误,但在删除证书并通过 mmc 控制台再次导入后修复。

于 2020-09-16T18:29:01.570 回答
0

我设法通过使用 Windows 证书管理器导入 SSL 证书 PFX 文件来解决此问题。

http://windows.microsoft.com/en-us/windows-vista/view-or-manage-your-certificates

于 2015-09-22T06:18:53.980 回答
0

我今天刚遇到这个问题,不得不发布我的解决方案,希望你会比我刚刚做的少掉头发。

在尝试了上述解决方案后,我们不得不从 SSL 提供商重新签发 SSL 证书(RapidSSL 作为 GeoTrust 的经销商签发)。

这个过程没有任何成本,只需等待确认电子邮件 (admin@) 到达时的五分钟,我们就再次获得了访问权限。

得到响应后,我们使用 IIS > 服务器证书来安装它。我们不需要 MMC 管理单元。

https://knowledge.rapidssl.com/support/ssl-certificate-support/index?page=content&id=SO5757

我们始终保持打开服务器的远程桌面窗口,以避免不同登录帐户/会话等的任何问题。我确实相信这是一个 IIS 错误,正如另一位专家所认为的那样,因为我们只有一个 RDC 帐户。最令人气愤的是,同一个证书已经完美运行了两个月,才突然“坏掉”。

于 2016-03-29T09:32:52.337 回答
0

就我而言,我最近从 StartSSL 导入了一个较新版本的证书(用于 IIS 的 PFX)并忘记删除旧版本,这以某种方式导致了这个错误(现在两个证书有点相同)。我删除了它们,导入了正确的,现在它可以工作了。

于 2016-09-10T19:07:44.413 回答
0

我们找到了另一个原因。如果您正在使用 PowerShell 编写证书安装脚本并使用该Import-PfxCertificate命令。这将导入证书。但是,导入的证书无法绑定到 IIS 中的网站,出现与此问题提到的相同错误。您可以使用此命令列出证书并查看原因:

certutil -store My

这列出了您的个人存储中的证书,您将看到以下属性:

Provider = Microsoft Software Key Storage Provider

此存储提供程序是较新的 CNG 提供程序,不受 IIS 或 .NET 支持。您无法访问密钥。因此,您应该使用 certutil.exe 在脚本中安装证书。使用证书管理器 MMC 管理单元或 IIS 导入也可以,但对于脚本,请使用 certutil,如下所示:

certutil -f -p password -importpfx My .\cert.pfx NoExport

有关更多信息,请参阅本文:https ://windowsserver.uservoice.com/forums/295065-security-and-assurance/suggestions/18436141-import-pfxcertificate-needs-to-support-legacy-priv

于 2020-05-07T15:52:59.327 回答
0

我能够通过双击证书删除然后导入它来解决这个问题。

于 2021-05-02T23:22:33.093 回答
0

对我来说,解决方法是从 IIS 中删除证书并重新导入,但导入“个人”证书存储而不是“网络托管”

根据以下内容,这很好,至少在我自己的情况下。

另外,如果有什么不同,我在本地机器上双击它后通过向导导入了证书,而不是通过 IIS 导入方法。在此之后,证书自动在 IIS 中可用。

于 2021-07-26T15:33:53.873 回答
0

就我而言,它已通过使用 certutil -repairstore 命令修复。尝试使用 powershell 将证书添加到 IIS 上的 Web 绑定时出现以下错误:

指定的登录会话不存在。它可能已经被终止。

我通过运行修复它:

certutil.exe -repairstore $CertificateStoreName $CertThumbPrint

其中CertificateStoreName是商店名称,CertThumbPrint是导入证书的指纹。

于 2022-01-20T08:01:11.597 回答
-1

尝试 :

  1. 进入 IIS 并删除“VSTS Dev Router”网站和“VSTS Dev Router Pool”应用程序池。
  2. 运行“certlm.msc”并打开个人/证书
  3. 删除任何名为“*.vsts.me”和“vsts.me”的证书
  4. 重新部署
于 2018-11-20T13:54:08.940 回答