如何清除客户端的.Net SSL会话缓存

12
我正在编写一个小型测试工具,使用HttpWebRequest来加载测试服务器。每次调用HttpWebRequest.GetResponse()时,我希望它建立一个新的SSL会话,而不是使用缓存中的会话。注意:我提供了客户端证书,并使用SSL会话进行相互认证。
有没有一种方法可以清除在http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.clientcertificates.aspx中提到的SSL会话缓存?
2个回答

6

ServicePoint类有一个名为ReleaseAllConnectionGroups的内部方法,它会将KeepAlive = false设置在所有连接上,然后释放它们。这个答案包含了所有需要的反射,但是在每个HttpWebRequest上设置KeepAlive = false将会清除客户端端的.Net SSL会话缓存。

SslEmptyCache可能需要用来清除SCHANNEL在本地代码级别上缓存的SSL-SessionID和/或票证。


1
将 KeepAlive 设置为 false 十分成功。尝试先设置 HttpRequestCachePolicy,但没有任何效果。 - C B
1
将 KeepAlive 设置为 false 对我没有任何作用。 - Suncat2000

1

4
但这是HTTP级别的缓存,不是吗?据我了解,原帖请求清除_SSL会话_缓存(它保留临时每个会话的密钥,加速初始SSL握手),请问是否是这样? - Mormegil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接