在asp.net中检索SSL会话ID

时间:2010-05-12 09:05:46

标签: asp.net ssl

有没有办法在asp.net中检索SSL会话ID服务器?

2 个答案:

答案 0 :(得分:3)

简短的回答是否定的。这是IIS的故意限制,以防止人们依赖于不可靠的东西。

在市场上,您会发现各种硬件负载平衡器将提供基于SSL会话ID的服务器持久性等功能,但它们不能很好地工作,因为SSL重新协商可能随时发生。例如,在Internet Explorer 8中,为打开到网站的每个选项卡协商新的SSL会话。您可以期待来自其他多进程浏览器的类似行为。因此,我必须强调,您不应将SSL会话ID用于任何类型的用户识别目的。

那就是说 - 如果您确实需要某些专门任务的SSL会话ID信息,我建议使用Apache,mod_ssl和mod_proxy作为IIS系统的前端。通过一些摆弄,您可以强制mod_ssl为您提供会话ID,然后您可以将其作为查询字符串参数添加到IIS服务器的代理请求....或者您可以将其存储在数据库中。

答案 1 :(得分:0)

您真的“只是”尝试检索会话ID字符串,还是在切换到SSL时可能会丢失所有会话信息?这将是一个非常常见的问题,因为在使用“InProc”会话存储时,服务器端的会话会丢失,并且当未存储在公共域中时,客户端上的会话cookie可能会丢失。

因此,您应该在Web.config文件中切换到状态服务器或sql server会话管理,例如:

<sessionState mode="SQLServer"
   cookieless="true"
   regenerateExpiredSessionId="true"
   timeout="30"
   sqlConnectionString="Data Source=MySqlServer;Integrated Security=SSPI;"
   stateNetworkTimeout="30" />

除此之外,我真的不知道为什么你也不能在SSL模式下检索HttpContext.Current.Session.SessionID

一些MSDN链接:

也许这会有所帮助。

祝你好运