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