我有一个网站(来自客户端)在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会话重用或一种无需重启就能破解缓存的方法?