【HTTPS】HTTPS过程详解,tcpdump抓包一步一步分析

RFC中的HTTPS交互过程如下:

【HTTPS】HTTPS过程详解,tcpdump抓包一步一步分析_第1张图片

【HTTPS】HTTPS过程详解,tcpdump抓包一步一步分析_第2张图片

抓包分析

Client Hello

【HTTPS】HTTPS过程详解,tcpdump抓包一步一步分析_第3张图片

客户端支持的TLS最高版本号

客户端生成的随机数

客户端支持的加密套件

主机名server_name

【HTTPS】HTTPS过程详解,tcpdump抓包一步一步分析_第4张图片

cipher suite怎么理解

名字为 ECDH-ECDSA-AES128-SHA256 的CipherSuite 

  • 使用 ECDH做密钥交换,
  • 使用ECDSA做认证,
  • 使用AES-128做加密算法,
  • 使用SHA256做MAC算法。

客户端能支持的加密套件即浏览器能支持的加密算法

Server Hello

【HTTPS】HTTPS过程详解,tcpdump抓包一步一步分析_第5张图片

协商后的TLS/SSL版本号

服务端生成的随机数

协商后的加密套件

Certifcate(Server-->Client)* 不用公钥体系,该步骤不需要

【HTTPS】HTTPS过程详解,tcpdump抓包一步一步分析_第6张图片

服务端提供证书信息给客户端验证,包括证书有效期等

Server Key Exchange(Server-->Client)*

【HTTPS】HTTPS过程详解,tcpdump抓包一步一步分析_第7张图片

密钥交换用到的服务器方的信息,有公钥信息

Server Hello Done

【HTTPS】HTTPS过程详解,tcpdump抓包一步一步分析_第8张图片

客户端与服务端的SSL握手过程结束

Cerficate(Client-->Hello)*

双向校验,服务端要求验证客户端的证书信息

Client Key Exchange(Client-->Server)

【HTTPS】HTTPS过程详解,tcpdump抓包一步一步分析_第9张图片

客户端会生成一个pubkey发送给服务端,服务端根据之前的random_c,random_s,pubkey三个随机数生成对称加密的session Key

Change Cipher Spec(Client-->Server)

【HTTPS】HTTPS过程详解,tcpdump抓包一步一步分析_第10张图片

通知服务端,接下来的数据采用session Key对称加密的方式

Encrypted Handshake Message(Client-->Server)

【HTTPS】HTTPS过程详解,tcpdump抓包一步一步分析_第11张图片

客户端随后发送一个经过加密的数据,服务端可以根据生成的session Key来进行解密,这个加密的消息解密后有固定的格式,符合这个格式,或者满足一些字符匹配才是合法的。

Change Cipher Spec(Server-->Hello)

【HTTPS】HTTPS过程详解,tcpdump抓包一步一步分析_第12张图片

通知客户端接下来的数据采用被sessionKey加密的对称加密方式

Encrypted Handshake Message(Server-->Client)

【HTTPS】HTTPS过程详解,tcpdump抓包一步一步分析_第13张图片

服务端立刻发送一个经过加密的消息,让客户端进行验证

正常的数据交互

至此之后,服务端和客户端之间通过协商的sessionKey进行数据交互

 

 

 

服务端支持的TLS版本提高至1.3,客户端与服务端通信抓包实践

【HTTPS】HTTPS过程详解,tcpdump抓包一步一步分析_第14张图片

会直接RST连接,无法建立连接

改写nginx配置

 #ssl_protocols TLSv1.2;  
 ssl_protocols TLSv1.3;

 

你可能感兴趣的:(TCP,Nginx,HTTPS,TLS,NGINX,SSL,安全)