我正在尝试为我的asp.net网站创建客户端证书身份验证。
为了创建客户端证书,我需要先创建一个证书颁发机构:
makecert.exe -r -n“CN = My Personal 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证书,但是我收到以下错误:
有什么建议吗?
答案 0 :(得分:66)
我遇到了同样的问题,但是以不同的方式解决了这个问题。我相信我使用的帐户从我最初尝试设置证书的时间到我返回完成工作的时间发生了变化,从而产生了问题。问题是,我不知道,但我怀疑它与当前用户的某种哈希有关,并且在某些情况下由于用户被修改或重新创建等而不一致。
为了解决这个问题,我从IIS和证书管理单元(对于当前用户和本地计算机)中删除了所有相关证书的引用:
接下来,我将* .pfx文件导入MMC中的certs管理单元,将其放在Local Computer \ Personal节点中:
从那时起,我就能够返回IIS并在服务器证书中找到它。最后,我去了我的网站,编辑了绑定并选择了正确的证书。它的工作原理是因为用户在整个过程中保持一致。
对于另一个答案中提到的问题,您不应该将其标记为可导出的主要安全问题。您可以有效地允许任何能够获得具有类似权限的盒子的人随身携带您的证书并将其导入其他任何地方。显然这不是最佳的。
答案 1 :(得分:48)
安全警告:复选框的真正含义是,无法读取证书的用户可以读取证书。比如用户运行IIS工作进程。在生产中使用other answer代替。
也发生在我身上,并通过确保在导入时“检查确保”允许导出此证书“来解决此问题:
(感谢this post!)
答案 2 :(得分: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 。
答案 3 :(得分:7)
没有人可能会关心这个问题,但我刚刚遇到了IIS 7网站绑定问题。我修复它的方式是去证书颁发机构并找到发出问题的服务器证书。我验证了请求证书的用户帐户。我然后使用该帐户的RDP登录到IIS服务器。我只能使用该帐户重新绑定https协议。不需要出口,重新发行或扩展改变黑客。
答案 4 :(得分:5)
在我们的情况下出现此问题的原因是我们已在虚拟机中安装了证书并为其创建了图像以供进一步使用。
从先前创建的映像创建另一个VM时,证书会发送消息。
为避免这种情况,请确保在每个安装的新VM上安装证书。
答案 5 :(得分:5)
由于错误地将证书导入当前用户个人证书存储区,我们遇到了同样的问题。将其从当前用户个人存储中删除并将其导入本地计算机个人证书存储解决了该问题。
答案 6 :(得分:2)
我在导出PKCS#12证书期间因openssl命令行错误而收到此错误。 -certfile键错了。我再次导出证书并成功导入。
答案 7 :(得分:2)
我有同样的问题。通过从个人商店(有人放入)和从虚拟主机中删除证书来解决。全部通过IIS管理器完成。然后我再次添加到webhosting商店(检查了所有内容),我可以再次使用HTTPS ...
答案 8 :(得分:2)
伙计们,在尝试了几乎所有解决方案都无济于事后,我最终找到了“指定的登录会话不存在”的解决方案。它可能已经被终止了。”使用 https 时"如下
使用正确的私钥验证您的 pfx 证书是否正常
运行 certutil 并找到证书“唯一容器名称” - 我使用了 certutil -v -store my
3.导航到 C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys 并找到与上面找到的容器名称对应的系统文件
一旦应用,我就检查了 IIS 并且能够毫无错误地应用到 https
答案 9 :(得分:1)
就我而言,这是因为World Wide Publishing Service用户没有证书的权限。安装证书后,访问MMC中的证书模块,然后右键单击出现问题的证书。选择"管理私钥......"来自"所有任务"菜单并添加以上用户。在我的情况下,这是SYSTEM用户。
答案 10 :(得分:1)
绑定证书时遇到相同的错误,但是在删除证书并通过mmc控制台再次导入后得到了解决。
答案 11 :(得分:1)
根据MSDN blog post,当当前用户帐户无权访问文件夹“ C:\ ProgramData \ Microsoft \ Crypto \ RSA”下的私钥文件时,可能会发生这种情况\ MachineKeys“ 。显然,可以通过授予用户帐户/用户组完全访问权限到上述文件夹的权限来解决此问题。
我也遇到过同样的问题,并且只需通过允许导出此证书复选框选中而简单地重新导入.pfx文件即可解决此问题。 >。
但是,此方法会带来安全风险-因为任何 访问IIS服务器将能够使用以下命令导出证书 私钥。
就我而言,只有我可以访问IIS服务器-因此,这不是很大的风险。
答案 12 :(得分:0)
对我来说,解决方法是从 IIS 中删除证书并重新导入它,但将其导入“个人”证书存储而不是“网络托管”
根据以下内容,这很好,至少对于我自己的情况。
另外,如果有什么不同,我在本地机器上双击证书后通过向导导入证书,而不是通过 IIS 导入方法。此后,证书在 IIS 中自动可用。
答案 13 :(得分:0)
我能够通过删除然后双击证书导入它来解决这个问题。
答案 14 :(得分: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
答案 15 :(得分:0)
尝试:
答案 16 :(得分:0)
尝试为我的开发计算机绑定localhost pfx cert时遇到此错误。 在我尝试上述任何一项之前,先尝试一些简单的方法。
之后一切似乎都有效。
答案 17 :(得分:0)
在我的情况下,我刚刚从StartSSL导入了一个较新版本的证书(用于IIS的PFX)并忘记删除旧版本,这会以某种方式导致此错误(现在两个证书类型相同)。我删除了它们,导入了正确的一个,现在它可以工作。
答案 18 :(得分:0)
不是从IIS导入证书,而是从MMC执行。 然后转到IIS进行绑定。
答案 19 :(得分:0)
我今天刚遇到这个问题,并且不得不发布我的解决方案,希望你的头发比我刚刚做的少。
在尝试上述解决方案后,我们不得不从SSL提供商处重新颁发SSL证书(RapidSSL作为GeoTrust的经销商发行)。
此过程有无成本,只有五分钟等待确认电子邮件(admin @)到达,我们再次获得了访问权限。
我们收到回复后,就使用了IIS>要安装它的服务器证书。我们不需要MMC管理单元。
https://knowledge.rapidssl.com/support/ssl-certificate-support/index?page=content&id=SO5757
我们保持一个远程桌面窗口到服务器打开,以避免任何不同的登录帐户/会话等问题。我相信这是一个IIS错误,因为我们只有一个RDC帐户。最令人愤怒的是,同样的证书在突然“破裂”之前已经完美地工作了两个月。
答案 20 :(得分:0)
我设法通过使用Windows证书管理器导入SSL证书PFX文件来解决此问题。
http://windows.microsoft.com/en-us/windows-vista/view-or-manage-your-certificates