Chr*_*ris 5 ssl http-caching public-key-encryption iis-7.5
我有一个网站(来自客户端)在Win 2008 R2 Standard服务器上访问WCF服务.WCF服务托管在IIS 7.5上.连接是HTTPS加密的.我无法访问客户端的服务器.
为了调试问题,我需要检查客户端发送的请求.我正在使用WireShark 1.10.3.为了这.我能够获得解密信息,我首先运行WireShark,并使用Full Handshake连接2台服务器.如果服务器使用Abbreivated Handshake,WireShark无法解密.
缩写握手采用称为SSL会话重用的技术,其中两个服务器将加密/解密信息存储在高速缓存中.这消除了完全握手所需的步骤,并在未来的请求中节省了CPU.我读到这个缓存的默认TTL是10个小时,但我还没有找到设置它的位置.当任一服务器缓存中没有信息时,TLS by specification执行完全握手.在Full Handshake之后,它会自动缓存信息,以便它可以进行缩写握手.
由于我正在调试,我必须多次运行许多场景.
我发现,确保两台服务器进行完全握手的唯一方法是重启我的服务器.这将清除缓存和会话信息,并强制服务器进行完全握手.
显然,每次重新启动我的服务器我都会回来测试这个问题并不理想.我做了一些研究,发现一些文章建议我可以通过将注册表项HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\ClientCacheTime\Value设置为0来禁用SSL会话重用.
http://blogs.msdn.com/b/huizhu/archive/2009/12/17/ssl-_2f00_tls-full-handshake-vs.-abbreviated-handshake.aspx http://support.microsoft.com/kb/ 247658
文章建议这将禁用加密信息的缓存.然而,这对我没用.我错过了什么吗?
有没有其他方法可以禁用SSL会话重用或一种无需重启就能破解缓存的方法?
以下是一些想法:
1) 让客户端清除其会话缓存(如果可能且比重新启动服务器更容易的话)。
2) 通过 HTTPS 代理(例如 burpsuite)发送请求。这很可能需要配置客户端以使用您的代理。重新启动或清除代理缓存将导致完整的 TLS 握手。
3) 使用 TLS 反向代理接收服务器 IP 和端口上的传入请求并将其转发到服务器。客户端不需要配置代理。只需重新启动代理即可开始完整的握手。如果服务器需要 HTTPS,请在代理上使用上游 SSL。如果服务器可以使用HTTP,您可以在代理和服务器之间以明文形式发送流量,并使用Wireshark直接查看流量。这可能会有所帮助:https://serverfault.com/questions/583374/configure-nginx-as-reverse-proxy-with-upstream-ssl
4) 在客户端和服务器之间的现有 TLS 连接上翻转一点或丢弃数据包。这将导致致命警报(完整性检查失败,表明可能存在 MITM 攻击),这将使该会话无效并需要下一个请求启动完整的握手。
| 归档时间: |
|
| 查看次数: |
2986 次 |
| 最近记录: |