【发布时间】:2013-02-07 11:41:17
【问题描述】:
背景:
我正在将内部应用程序更新为两步验证过程。我想在传统的用户名/密码表单之上添加一个客户端证书身份验证过程(通过智能卡)。该应用程序是用 C# 编写的,托管在 IIS7 上,面向 Chrome 和 IE8。
问题:
我在让应用程序提示用户输入客户端证书时遇到问题。我一直在 Fiddler 的帮助下调试应用程序。当我在 Fiddler 的用户目录 (C:\Documents and Settings\USER\My Documents\Fiddler2) 中保存了测试客户端证书时,应用程序按预期工作。系统提示我输入保护智能卡的 PIN 码,输入正确后,我会进入登录表单。当我关闭 Fiddler 时,应用程序会引发 403 Forbidden 错误(因为 Fiddler 不再运行并指向其证书)。我一直想不通的是为什么应用程序不会正常提示输入证书。
当前服务器设置:
- 自签名证书已创建
- 443 绑定指向自签名证书
- 启用匿名身份验证
- 自签名证书已添加到受信任的根 CA 和中间 CA(我读到另一个人在这两者中都有它,而不仅仅是受信任的根 CA,并且解决了他们的问题,尽管这两种设置都没有为我们工作) .
- 我清除了受信任的根 CA 中我不需要的其余证书(我在其他地方读到,证书过多会导致 SSL 阻塞)。
除了在另一台服务器上从头开始之外,我没有其他想法可以尝试。有谁知道问题可能是什么?这似乎应该是相当直截了当的,我错过了一些小事。欢迎任何想法。
更新:
今天花了更多时间处理这个问题后,我坚信这与 IIS7 没有正确配置有关(我最初没有设置它)。我认为这是因为我启用了失败的请求跟踪,查看了随后生成的 .xml 文件,发现抛出了 500 错误。
Chrome 会抛出“访问网页被拒绝”消息,而不是“403 - 禁止访问:访问被拒绝”。我不知道这是否有帮助。我确实知道,当我不需要证书时,该站点将按预期工作。要求证书是失败的地方。
应用程序池设置为 .Net 4.0 |经典 |网络服务。
【问题讨论】:
-
不确定我是否可以帮忙,但有几个问题:1) 你也尝试过 IE 或 FF 吗? 2) 可能想在另一台服务器上复制结果。我已经看到太多的问题通过这种方式得到了帮助/解决——它也让你有机会深入了解你的 IIS7 站点是如何设置的; 3) 是否有更多的客户端和/或服务器日志记录您可以尝试获得更多的洞察力 - 似乎更多的是在 IIS7 方面。
标签: authentication iis-7 windows-server-2008 smartcard client-certificates