客户端证书不能与IIS7一起使用

我一直在试图获得一个web服务,我们正在创build要求连接数个星期的客户端证书,没有多less运气。 我以为我会试图做一个简单的网站,需要客户端证书从等式中删除所有额外的web服务代码。 即使所有的在线教程看起来都是一个更容易的过程,但我仍然没有运气。 我不知道如果我错过了IIS中的设置或者只是没有安装。

服务器是Windows Server 2008 Web Edition。 我的本地客户端框是Windows 7。

我详细的每一步我创build这个testing网站。

首先,我必须创build我的testing证书。 从我的本地机器上的Windows 7 SDK 7.1命令提示符,我运行这些命令:

makecert.exe -r -n "CN=My Personal CA" -pe -sv MyPersonalCA.pvk -a sha1 -len 2048 -cy authority MyPersonalCA.cer makecert.exe -iv MyPersonalCA.pvk -ic MyPersonalCA.cer -n "CN=John Doe" -pe -sv JohnDoe.pvk -a sha1 -len 2048 -sky exchange JohnDoe.cer -eku 1.3.6.1.5.5.7.3.2 pvk2pfx.exe -pvk JohnDoe.pvk -spc JohnDoe.cer -pfx JohnDoe.pfx -po password 

这些命令后,我有这些文件:

  MyPersonalCA.cer MyPersonalCA.pvk JohnDoe.cer JohnDoe.pfx JohnDoe.pvk 

然后,我在本地机器(工具 – > Internet选项 – >内容 – >证书导入)的IE浏览器中导入以下内容:将JohnDoe.pfx导入“个人”存储区(在“高级”中,确保select了“客户端身份validation” )MyPersonalCA.cer进入“受信任的根authenticationAuthrorities”存储

在服务器上,我使用MMC证书pipe理单元导入了相关的证书:

  JohnDoe.cer into [Local Computer\Personal] and [Current User\Personal] MyPersonalCA.cer into [Local Computer\Trusted Root Certification Authorities] and [Current User\Trusted Root Certification Authorities] 

我创build了一个空白的VB.NET(VS2008)Web应用程序,并将其部署到服务器。 在IIS中,我将此应用程序分配给以pipe理员身份运行的应用程序池以避免任何权限问题(是的,稍后我会解决这个问题)。

在IIS中,我更改应用程序的SSL设置,如下所示:

  Check "Require SSL" Under "Client Certificates", select "Require" 

我也分配了403.7和403.5错误到自定义错误页面,所以我可以告诉我得到哪个403错误。

IE浏览器应该提示在去页面时select一个客户端证书。 由于较新版本的IE不会提示是否没有匹配的证书,我发现一个IE6旧盒子,并在该盒子(证书安装)我得到客户端证书对话框,但没有证书列出。 我的开发人员盒子上的IE10从不打开提示。 我刚刚得到了403.7

有人可以告诉我哪里错了吗? IIS是否需要额外的设置才能正常工作?

在提交这个问题时,我偶然发现了另外一篇关于MakeCTL和netssh的文章。 从这我发现,如果我运行:

  netssh http show sslcert 

我得到一个包括这个设置的列表:

  Negotiate Client Certificate : Disabled 

这是否需要打开? 如果是这样,我该如何打开这个? 我设法find的有限的指示听起来就像我需要删除SSL绑定并重新添加它。 由于服务器正在使用,所以我很犹豫。

我有一个类似的错误,我已经添加到本地计算机的受信任根CA的自签名客户端证书不被接受。 我通过应用此处所述的修复程序解决: https : //support.microsoft.com/en-au/kb/2801679

简而言之,如果受信任的根CA列表中有太多的证书,则呈现给调用者的可接受的根证书列表将被截断。 如果您不幸,那么您所需要的根证书将不包含在内,系统将认定您没有任何可接受的证书。 您可以通过在事件代码为36885的“Schannel”引发的IIS服务器的系统事件日志中查找警告来诊断此问题。此修复程序是删除registry键…上述MS链接中的更多详细信息。