访问某些文件夹

时间:2016-05-09 11:57:52

标签: ssl iis ssl-certificate iis-7.5 client-certificates

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

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

好的,我在选择证书部分时遇到了麻烦。在将其设置为视图内容上的一个文件夹之前,我正在尝试在全局应用程序上配置它。

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

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

当我尝试访问Firefox和Chrome的应用时,返回403禁止错误,声明我无法使用提供的凭据访问该应用。

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

我没有被提示输入证书。 如果我在SSL设置上取消选中客户端证书中的“require”,我可以通过https访问该应用程序。

这是我第一次使用客户端证书,所以它有点令人困惑,也许我没有提供足够的信息。感到有兴趣询问有关评论的进一步信息。

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

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

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

1 个答案:

答案 0 :(得分:0)

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

查看这篇kb文章: https://support.microsoft.com/en-us/kb/933430

TL DR;要解决此问题,只需在注册表中添加一个新条目: HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \控制\ SecurityProviders \ SCHANNEL

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

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