enb*_*081 61 asp.net iis ssl client-certificates
我正在尝试为我的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
Run Code Online (Sandbox Code Playgroud)
导入MyPersonalCA.pfx后,我尝试将https站点绑定添加到我的网站并选择上面的SSL证书,但是我收到以下错误:

有什么建议?
Mik*_*e L 67
我遇到了同样的问题,但以不同的方式修复了它.我相信我使用的帐户从我最初尝试设置证书的时间到我返回完成工作的时间发生了变化,从而产生了问题.问题是,我不知道,但我怀疑它与当前用户的某种哈希有关,并且在某些情况下由于用户被修改或重新创建等而不一致,等等.
为了解决这个问题,我从IIS和证书管理单元(对于当前用户和本地计算机)中删除了所有相关证书的引用:


接下来,我将*.pfx文件导入MMC中的certs管理单元,并将其放在Local Computer\Personal节点中:
从那时起,我就能够返回IIS并在服务器证书中找到它.最后,我去了我的网站,编辑了绑定并选择了正确的证书.它的工作原理是因为用户在整个过程中保持一致.
对于另一个答案中提到的问题,您不应该将其标记为可导出,因为这是一个主要的安全问题.您实际上允许任何能够获得具有类似权限的盒子的人随身携带您的证书并将其导入其他任何地方.显然这不是最优的.
Rom*_*kov 49
安全警告:复选框的真正含义是,无法读取证书的用户可以读取证书.比如用户运行IIS工作进程.在生产中使用另一个答案.
发生在我身上,并通过确保在导入时检查 "允许导出此证书"来修复:

(感谢这篇文章!)
enb*_*081 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
由于错误地将证书导入当前用户个人证书存储区,我们遇到了同样的问题.将其从当前用户个人存储中删除并将其导入本地计算机个人证书存储解决了该问题.
小智 5
在我们的情况下出现此问题的原因是我们已将证书安装在虚拟机中并为其进行了进一步使用的映像.
从先前创建的映像创建另一个VM时,证书会发送该消息.
为避免这种情况,请确保在安装的每个新VM上安装证书.
就我而言,这是因为万维发布服务用户没有证书的权限。安装证书后,访问MMC中的证书模块并右键单击有问题的证书。从“所有任务”菜单中选择“管理私钥...”并添加上述用户。在我的例子中这是系统用户。
我们发现了另一个原因。如果您使用 PowerShell 编写证书安装脚本并使用该Import-PfxCertificate命令。这将导入证书。但是,导入的证书无法绑定到 IIS 中的网站,并出现与此问题提到的相同错误。您可以使用此命令列出证书并查看原因:
certutil -store My
Run Code Online (Sandbox Code Playgroud)
这列出了您的个人存储中的证书,您将看到此属性:
Provider = Microsoft Software Key Storage Provider
Run Code Online (Sandbox Code Playgroud)
此存储提供程序是较新的 CNG 提供程序,不受 IIS 或 .NET 支持。您无法访问该密钥。因此,您应该使用 certutil.exe 在脚本中安装证书。使用证书管理器 MMC 管理单元或 IIS 进行导入也可以,但对于脚本编写,请使用 certutil,如下所示:
certutil -f -p password -importpfx My .\cert.pfx NoExport
Run Code Online (Sandbox Code Playgroud)