HTTPS 深入浅出 - Session ID 和 Session Ticket

SSL 中的 session 会跟 HTTP 的 session 类似,都是用来保存客户端和服务端之间交互的一些记录。这里的 SSL 的 session 保存的是 SSL 的握手记录。使用 session

无论用哪种方式,客户端都会记录 Session编号,只是 Session Ticket 相比 Session ID,客户端还多该次会话使用的加密信息,会在 SSL 握手过程中由客户端直接发给服务端。所以两者的主要区别,就是加密的握手记录谁负责保存的问题。Session ID 是服务端保存握手记录,Session Ticket 是 客户端保存握手记录。

SSL 握手过程,因为多了几次 RTT,还有加解密的计算,一直以来都是 HTTPS 的耗时大户,是要被优化的重点。复用了握手记录,可以很显著地提高 HTTPS 的效率。

使用 Wireshark 抓包进行分析 Session ID 的使用情况。假设有一次请求,服务端允许使用 Session ID,那么会有下面的流程:

  • 客户端的 Client Hello 带上 Session ID
  • 服务端复用 Session ID 后,会直接略过协商加密密钥的过程,直接发出一个 Change Cipher Spec 报文
  • 然后就是加密的握手信息报文
No. Time Source Destionation Protocol Length Info
7 0.027254 172.17.32.63 172.17.32.67 TLSv1.2 583 Client Hello
8 0.036114 172.17.32.67 172.17.32.63 TLSv1.2 203 Server Hello, Change Cipher Spec, Encrypted Handshake Message
9 0.041375 172.17.32.63 172.17.32.67 TLSv1.2 117 Change Cipher Spec, Hello Request, Hello Request

解析到的内容有:

Secure Sockets Layer
    TLSv1.2 Record Layer: Handshake Protocol: Server Hello
    TLSv1.2 Record Layer: Change Cipher Spec Protocol: Change Cipher Spec
        Content Type: Change Cipher Spec (20)
        Version: TLS 1.2 (0x0303)
        Length: 1
        Change Cipher Spec Message
            [Expert Info (Note/Sequence): This session reuses previously negotiated keys (Session resumption)]
                [This session reuses previously negotiated keys (Session resumption)]
                [Severity level: Note]
                [Group: Sequence]
    TLSv1.2 Record Layer: Handshake Protocol: Encrypted Handshake Message
        Content Type: Handshake (22)
        Version: TLS 1.2 (0x0303)
        Length: 40
        Handshake Protocol: Encrypted Handshake Message

This session reuses previously negotiated keys (Session resumption) 。要复用的握手信息在 Encrypted Handshake Message 中。

在服务端支持 Session ID 的时候会使用该优化,因为这个会消耗服务端资源,所以有的服务端不提供。

因为系统的 openssl 版本的限制,有一些 Android 系统是不支持 Session Ticket 的。如果非要用上这个特性,可以在应用自己携带最新版本的 openssl,代价是包体积会增大很多。

Session Ticket 从 openssl 0.9.8f 开始支持。

猜你喜欢

转载自blog.csdn.net/firefile/article/details/80531978