访问某些文件夹时要求客户端证书IIS7.5

Ask for client certificate IIS7.5 when accessing certain folders

我们有一个 ASP.NET MVC4 应用程序,其中有一部分应通过客户端证书进行保护。

当任何人想要连接到应用程序的这一部分时,浏览器应该要求他们提供客户端证书,一旦他们select它,我们的服务器就会得到它,检查它的有效性并显示内容。

好的,select 证书部分有问题。在仅将其设置为视图内容上的一个文件夹之前,我尝试在全局应用程序上进行配置。

我已将 SSL 设置为必需,并且还在 IIS 上的应用程序配置的 SSL 配置中设置了需要客户端证书。

我已经启用了 iisClientCertificateMappingAuthentication(虽然我还没有设置映射)

当我尝试同时访问该应用程序时,Firefox 和 Chrome,return 出现 403 禁止错误,表明我无法使用提供的凭据访问该应用程序。

我在我的本地计算机上安装了一个客户端证书,并且在服务器本地计算机上创建此证书的 CA 作为受信任的根证书。

系统没有提示我提供证书。 如果我在 SSL 设置中取消选中来自客户端证书的 "require",我可以通过 https 访问该应用程序。

这是我第一次使用客户端证书,所以有点混乱,可能我没有提供足够的信息。欢迎在评论中询问更多信息。

编辑: 我已经导出客户端证书,将其复制到服务器并在那里检查。证书显示有效,并且证书链中的每个元素似乎都能在服务器中识别。

我也检查了 IIS 日志,我得到的错误是 403.7,所以证书没有颁发给服务器或者证书无效。

现在...我已检查证书在服务器上是否有效,它已正确安装在客户端上,但未到达服务器或未在服务器上验证...我在这里缺少什么?

好的,我终于找到问题了,它与为受信任的证书颁发机构列表保留的缓冲区大小有关。

查看此知识库文章: https://support.microsoft.com/en-us/kb/933430

TL 博士;要解决此问题,只需在注册表中添加一个新条目: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

将 SendTrustedIssuerList 命名为值为 0 的 DWORD 值。

这样,服务器就不会发送受信任的证书颁发机构列表,因此浏览器会向用户显示完整的证书列表。