Hi,

> Have been wondering about if/how i could persist ssl sessions between
> servers myself if i ever need it.
> And found the concept of a SSL-session-id rather promising, then after
> looking into how to use it and its reliability i found some articles
> saying it might not be wise..
>
> https://www.f5.com/pdf/white-papers/cookies-sessions-persistence-wp.pdf
> "SSL persistence was suddenly rendered inoperable" (in IE5)
>
> http://docwiki.cisco.com/wiki/Secure_Sockets_Layer_Persistence_Configuration_Example
> "SSL stickiness is generally deemed unreliable."
> "SSL stickiness is not recommended due to the numerous limitations that
> can break client persistence"
>
> Also one might need to enforce on the backend webservers that SSLv2 is
> NOT used. ("SSLv2 places the session ID within the encrypted data"
> according to the Cisco doc)

Thanks for those links.

We can surely ignore (the major problem with) SSLv2 and IE5, both are
EOL/EOS since at least a decade.

We can probably ignore (the minor bug [1] in) IE6 and IE7 now, since even
Windows XP users can upgrade to IE8 via windows update, and the bug is
triggered in corner cases only.



> So now the question arises, are current browsers (including on mobile
> devices) all sending the same SSL-session-ID properly during a hour of
> 'shopping'? Or are these described issues not currently applicable
> anymore with recent software/devices?

All desktop browser support SSL session ID reuse correctly, but it looks
like this is not always the case on smartphones, as Vincent Bernat mentioned
here [2]:
> Surprisingly, Android 2.3.4 browser (as shipped by Cyanogen Mod) does
> not support any session resume.


Support for TLS tickets on the other hand is not that widely supported
currently, with schannel (Internet Explorer and Safari on Windows) only
introducing RFC5077 support in Windows 8.

But TLS Tickets need to be disabled anyway, if you are relying on the session
ID for persistence (this is important!).



> I'm a bit doubtful if using ssl-session-id is actually a good way to
> enforce persistence.

Its probably not ideal and will not work in 100% of the use-cases.

Terminating SSL on the load-balancer can be an option (but there are
scalability concerns with it).
Reverting back to good old source ip based persistence has problems
on its own (clients changing IP addresses due to load-balanced NAT or
networking changes from Wifi-to-Wifi or Wifi-to-3G).

When your SSL terminating backend supports sharing of the session cache
with other backends, for example via memcached, then you can workaround
this problem [3]. Btw, any possibility to do this with HAProxy would be
great.

Vincent sums it up here [4].


Having said this, I do think session ID based persistence has its a valid
use-case.


Regards,

Lukas


[1] http://support.microsoft.com/kb/937480/en-us
[2] http://vincent.bernat.im/en/blog/2011-ssl-session-reuse-rfc5077.html
[3] https://github.com/bumptech/stud/pull/29
[4] 
http://vincent.bernat.im/en/blog/2011-ssl-session-reuse-rfc5077.html#web-server-support
                                       

Reply via email to