【问题标题】:How to clear the client-side .Net SSL session cache如何清除客户端 .Net SSL 会话缓存
【发布时间】:2011-07-12 04:12:12
【问题描述】:

我正在编写一个小测试工具,它使用 HttpWebRequest 对服务器进行负载测试。我想要 每次我尝试调用 HttpWebRequest.GetResponse() 时,它都会建立一个新的 SSL 会话,而不是使用缓存中的会话。注意:我正在提供客户端证书,并为 SSL 会话使用相互身份验证。

有没有办法清除http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.clientcertificates.aspx 中提到的 SSL 会话缓存?

【问题讨论】:

    标签: .net caching session ssl


    【解决方案1】:

    我认为您正在寻找 HttpRequestCacheLevel 枚举值 NoCacheNoStore

    http://msdn.microsoft.com/en-us/library/system.net.cache.httprequestcachelevel.aspx

    然后您可以覆盖 HttpRequestCachePolicy

    http://msdn.microsoft.com/en-us/library/system.net.webrequest.cachepolicy.aspx

    【讨论】:

    • 但这是 HTTP 级别的缓存,不是吗? OP 请求清除 SSL 会话 缓存(保留临时的每个会话密钥,加速初始 SSL 握手),AFAICT。
    【解决方案2】:

    ServicePoint 类有一个名为ReleaseAllConnectionGroups 的内部方法,它在所有连接上设置KeepAlive = false,然后释放它们。 This answer 包括所有需要的反射,但在每个 HttpWebRequest 上设置 KeepAlive = false 将使客户端 .Net SSL 会话缓存保持清晰。

    SslEmptyCache 可能需要清除 caching of SSL-SessionID 和/或 SCHANNEL 在本机代码级别完成的票证。

    【讨论】:

    • 设置 KeepAlive = false 效果很好。尝试先设置HttpRequestCachePolicy,但没有效果。
    • 设置 KeepAlive = false 对我没有任何作用。
    猜你喜欢
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    • 2020-09-07
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    • 2020-12-01
    • 2023-03-13
    相关资源
    最近更新 更多