IIS 7错误“指定的登录会话不存在。它可能已经终止了。” 使用https时


73

我正在尝试为我的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授权MyPersonalCA.cer

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

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

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

在此处输入图片说明

有什么建议?


遇到了

Answers:


79

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

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

IIS证书

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

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

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

从那时起,我能够返回IIS并在“服务器证书”中找到它。最后,我去了我的网站,编辑了绑定并选择了正确的证书。之所以起作用,是因为用户在整个过程中保持一致。

在另一个答案中提到的观点,您不必非得将其标记为可导出,因为这是一个主要的安全问题。您实际上是在允许任何具有相似权限的人都可以随身携带证书并将其导入其他任何地方。显然,这不是最佳选择。


1
就我而言,问题是我将* .cer文件导入了证书存储。确保将* .pfx文件导入证书存储。
MarioVW

1
似乎遵循这些步骤(而不是直接导入到服务器证书中)也引入了中间证书,这似乎很重要。
Katstevens,2016年

我只能说谢谢@Mike L-这实际上是唯一对我有用的东西。
pim

我用了这个解决方案。但是,GoDaddy仅为我们的新证书提供了一个.crt文件,因此要从先前的证书中提取私钥(使用openssl),然后从该证书(和.crt)中创建一个.pfx并将其导入。
乔纳森·威廉姆斯

添加另一个可能的解决方案。对我而言,这是因为我是在IIS中而不是从Windows证书管理器中导入了证书。
ryanulit

57

安全警告:此复选框的真正含义是该证书可以由不应该能够读取的用户读取。例如用户正在运行IIS工作进程。在生产中使用其他答案

我也遇到了这个问题,并通过确保“允许导出此证书”得到修复 遇到了在导入时选中问题:

                                            在此处输入图片说明

(感谢这篇文章!)


12
这不是安全隐患吗?
lanoxx

我首先必须在MMC管理单元证书存储“证书(本地计算机)/个人”下删除该证书,然后在同一存储中,右键单击并选择导入,然后导入证书,将其标记为可导出。
乔纳森·奥利弗

2
@ aboy021:不,你不会。输入的密码将再次用于加密证书,但是您可以选择任何密码,并且不需要与用于导入证书的原始密码匹配。
lanoxx 2014年

6
这是主要的安全风险。具有管理访问权限的任何人都可以导出您的私钥。请改用Mike L的答案。
史蒂文·德·科克

3
@romkyns是的,但是您需要第三方工具来做到这一点。当密钥是可导出的时,具有读取权限的非管理用户(可以使用MMC进行管理)也可以导出私钥。在这种情况下,它将包括IIS工作进程...
Steven De Kock

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


7

也许没人会再在乎这个了,但是我只是通过IIS 7网站绑定来面对这个问题。我修复它的方法是去证书颁发机构,并找到与问题一起颁发给服务器的证书。我验证了请求证书的用户帐户。然后,我使用具有该帐户的RDP登录到IIS服务器。我只能使用该帐户重新绑定https协议。无需导出,重新发行或扩展名更改黑客。


6

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


2
我会说这通常是正确的答案,因为它很容易犯错。如果使用Certmgr.msc启动证书管理器,则将获得个人存储而不是计算机存储。这意味着登录是不同的。相反,您必须使用mmc,然后添加允许您选择计算机存储的管理单元。
OneUponATimeInTheWest”

5

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

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

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


3

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


我的问题是IIS不会导入完整的证书链(即父证书),而仅导入子证书。
ErikusMaximus

这个答案对我来说是最简单的解决方案,但仍然不确定出什么问题。
艾蒂安

2

由于在导出PKCS#12证书期间使用了opensl命令行错误,因此出现此错误。-certfile密钥错误。我再次导出了证书,它已成功导入。


2

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


2

以我为例,这是因为World Wide Publishing Service用户没有该证书的权限。安装证书后,访问MMC中的证书模块,然后右键单击出现问题的证书。从“所有任务”菜单中选择“管理私钥...”,然后添加上述用户。在我的情况下,这是SYSTEM用户。


2

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

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

进口证明书

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

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


2

尝试了几乎每一个解决方案都无济于事的人们最终发现我的解决方案“指定的登录会话不存在。它可能已经终止了。” 在下面使用https“时

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

  2. 运行certutil并找到certs的“唯一容器名称”-我用certutil -v -store my

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

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

应用后,我便检查了IIS,并能够将其无误地应用到https


1

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

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

在那之后一切似乎都正常了。


1

绑定证书时出现相同的错误,但在删除证书并通过mmc控制台再次导入后已修复。


1
关于其修复原因的任何解释都将更有帮助
Umang


0

我今天刚遇到这个问题,因此不得不发布我的解决方案,希望您的头发比我少。

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

没有成本在这个过程中,只需五分钟的等待,而确认电子邮件(管理员@)到了,我们再次获得了进入。

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

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

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


0

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


0

尝试:

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.