赞
踩
SSL(Secure Sockets Layer)和TLS(Transport Layer Security)是一种安全协议,用于在计算机网络上实现加密通信。SSL最初由美国Netscape开发,随后发展为TLS,并得到了广泛应用,成为互联网上保护通信安全的标准协议。
TLS 位于 TCP 之上(也有基于 UDP 的,称为DTLS,这里不讨论它),如图所示。
SSL/TLS是在应用层和传输层之间的一个安全协议,通信的双方在进行通信前需要握手,通过在通信的两端建立一个安全的通道,保护数据在传输过程中的安全性。以下是SSL/TLS提供的几个重要的安全功能:
TLS协议可分为两个阶段:
Record Type Values dec hex ------------------------------------- CHANGE_CIPHER_SPEC 20 0x14 ALERT 21 0x15 HANDSHAKE 22 0x16 APPLICATION_DATA 23 0x17
- 1
- 2
- 3
- 4
- 5
- 6
Version Values dec hex ------------------------------------- SSL 3.0 3,0 0x0300 TLS 1.0 3,1 0x0301 TLS 1.1 3,2 0x0302 TLS 1.2 3,3 0x0303
- 1
- 2
- 3
- 4
- 5
- 6
握手阶段,如果服务器发送了CertificateRequest,就意味着开启”双向认证“。和单向认证相比,”双向认证“在握手阶段多了下面3种报文:
CertificateRequest
;Certificate
和 CertificateVerify
。当客户端和服务器在TLS握手过程中建立了一个安全连接后,可以通过复用TLS协商结果来提升后续通信的效率和性能。这通常可以通过两种方式来实现:Session Identifier 和 Session Ticket。
Session Identifier 是一种简单的方式,它使用一个唯一的标识符来引用之前的TLS会话。
Session Identifier 的优点是它很简单,但它的缺点是,如果服务器重新启动或者会话超时,之前的Session Identifier就会失效,需要重新建立会话。
Session Ticket 是一种更灵活的方式,它允许会话信息在服务器重启后仍然有效。
Session Ticket 的优点是它可以在服务器重启后仍然保持会话的有效性,但需要确保会话票据的安全性,以防止被恶意利用。
总的来说,Session Identifier 是一种简单且有效的会话复用方式,但在某些情况下可能会失效。Session Ticket 提供了更灵活的会话复用机制,可以在服务器重启后仍然保持会话的有效性。服务器可以根据具体情况选择使用其中一种或两者结合使用。
| | | Record Layer | Handshake Layer | | | | | | +----+----+----+----+----+----+----+----+----+------ - -+----+----+----+----+------ - -+ ...... | 22 | | | | | | | | | | | | | | | |0x16| | | | | | | | |message | | | | |message | +----+----+----+----+----+----+----+----+----+------ - -+----+----+----+----+------ - -+ / /--/--/ | \ \----\-----\ | \ \----\-----\ | / / | \ \ \ \ type: 22 / | \ handshake message length \ handshake message length / type type / length: arbitrary (up to 16k) Handshake Type Values dec hex ------------------------------------- HELLO_REQUEST 0 0x00 CLIENT_HELLO 1 0x01 SERVER_HELLO 2 0x02 CERTIFICATE 11 0x0b SERVER_KEY_EXCHANGE 12 0x0c CERTIFICATE_REQUEST 13 0x0d SERVER_HELLO_DONE 14 0x0e CERTIFICATE_VERIFY 15 0x0f CLIENT_KEY_EXCHANGE 16 0x10 FINISHED 20 0x14
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
共有10种类型的Handshake报文,多个Handshake报文可以组合成一个TLS Record,上面演示中就有两个Handshake报文。具体可参考:10种 Handshake报文
具体可参考:
以ping https://www.csdn.net为例
因为这是一次单向认证的Handshake过程,故比较简单。
重点可以关注红框里的内容,ClientHello报文告诉了服务器端,客户端支持的TLS协议的最高版本(TLS 1.2)以及支持的加密算法
服务器给客户端返回的消息注意关注TLS协议版本,服务器选择的加密算法(TLS_AES_128_GCM_SHA256),以及Change Cipher Spec报文(告诉客户端可以开始加密通信了)。
主要进行数据传输,不进行赘述。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。