HTTPS的主要缺点是需要设置连接,每次新的TLS连续都需要握手,以便创建共享的加密密钥,这个握手过程在标准TCP的握手过程之上还需要两个额外的来回过程,用这样一个高延时的连接,在网站第一个字节传输之前需要三个来回就让人感觉这个网站有点慢。
TLS有几个特征可以用来消除额外的来回,比如重用一个会话session,两个标准会话重用机制是 session IDs (RFC
5246) 和 session tickets (RFC
5077),使用其中一个技术,一个客户端可以重用之前创建的会话,这个会话是之前和服务器进行握手成功的,这样可以减少一次来回过程。基于SessionID的会话重用适合现代所有浏览器,FireFox和Chrome还支持 session
tickets,服务器端的支持也广泛使用,nginx, Apache, HAProxy, IIS等等都支持session ID
和session ticket。
Session ID重用
重用一个加密的会话是很容易,前提是客户端和服务器端都保存了会话key,通过每个连接给出的唯一标识,服务器知道一个进来的连接是否已经在之前创建过,如果服务器在会话中也已经有会话key,它就能重用。
Session ID需要服务器保存会话状态如会话key等,这样下次连接才能复用,这就需要服务器保存很多状态信息,耗费了大量内存。
Session ID共享复用在Apache中可以通过SSLSessionCache 配置,在nginx可以通过ssl_session_cache设置。
Session ticket重用
在会话ticket复用中,服务器不用为每个session保存状态,它用一个blob数据保存状态,然后将它发给客户端用来维护后来连接,会话ticket允许服务器将其存储状态委托给客户端,类似HTTP cookie一样。
一个会话ticket是一个加密的数据blob,其中包

最低0.47元/天 解锁文章
890

被折叠的 条评论
为什么被折叠?



