随着 POODLE 的发布,我希望我的服务器能够接受 SSL3.0 连接,但让它们提供一个页面,指示用户应更新到支持 TLS 的较新浏览器。这似乎是可能的,因为 IIS 应该知道正在使用哪种密码套件,但我不知道如何配置此信息以允许托管不同的内容或转发到网站本身进行处理。
有没有办法让 IIS 根据 SSL/TLS 协商期间使用的密码套件进行重定向,或者让网站可以获得有关密码套件的信息?
答案1
SSL / TLS 协商发生在https.sys
IIS 内部,而不是外部。当流量到达 IIS 时,所有与加密相关的工作都已完成。
我不知道有任何 API 可以将协商的协议公开给基于 IIS 的应用程序。您可以尝试从其他来源获取它,但我怀疑这充其量也只是一种骗局。
日志记录Schannel 成功事件将生成显示协商参数的事件 ID 36880 事件,但 Microsoft 没有费心在这些日志条目中包含客户端 IP 地址(至少,我没有看到)。(这本来会很好,但 Microsoft 再次没有费心在事件日志中包含 IP 地址... Grrrr!)
您可以将数据包捕获运行到环形缓冲区中,查找 SSL 2.0 协商并将其记录到某种持久性存储中。您的应用程序可以查询该存储,将客户端 IP 地址与协商日志关联,然后继续发出警告。我想这是一种可行的做法,但这似乎需要做很多工作(和“移动部件”),却收效甚微。(不过,这听起来确实很有趣……)