使用Wireshark连接SSL调试

来源:www-01.ibm.com/support/docview.wss?uid=swg27050151&aid=1

一、总览

注:(1)*表示可选或情境相关的消息

       (2)[Change Cipher Spec]不是TLS握手消息但是是独立的,是一种TLS协议内容类型,用于帮助第三方避免流程停顿。

1、TLS Client Hello

(1)可能是SSL3.0,TLS1.0,TLS1.1,TLS1.2

(2)包含能够使用的密码套件列表

(3)包含扩展

(4)可能包含SSL会话ID(如果恢复)

2、TLS Server Hello

(1)包含证书公共密钥

(2)包含期望的密钥套件

(3)包含密钥交换

(4)可能请求证书(相互的SSL)

TLS客户端和服务器根据客户端呈现的密码套件列表和服务器端的密码套件偏好协商密码套件。

客户端和服务器将协商加密密钥,并且客户端将接受一个SSL会话。

二、完整的TLS握手

1)套接字使用TCP握手进行初始化

2)客户端发送"client hello"消息

3)服务器使用"server hello"消息进行响应,并附带"certificate"和"server hello done"消息

4)客户端使用"client key exchange",“change cipher spec”和"Encrypted message"消息进行响应

5)服务器端使用“change cipher spec”和“encrypted handshakemessage”进行响应

6)TLS握手完成,并且服务使用加密数据发送“应用层数据”

三、TLS客户端Hello消息-版本信息

TLS Client Hello包含两个版本信息:

1、记录层自己的版本信息

2、客户端 hello自己的版本信息(handshake type中版本信息)

版本信息的不匹配通常不会引起问题(NIST/FIPS服务器会引起问题)。请记住有效的版本信息是handshake type中版本信息

四、TLS客户端Hello-密码套件

以上是客户端发送给服务器端的部分密码套件列表。在RFC5246的7.4.1.2节中描述:这是一个由客户端支持的加密选项,客户端的首要偏好优先(排在第一位)。

五、TLS客户端HELLO-扩展

最后,Client Hello能够发送扩展。

下面有一些扩展将影响服务器如何进行响应:

1、签名算法(signature algorithms):将帮助确定客户端可以接受的证书类型;

2、服务器名称指示(server name indiction):如果存在多个可用的证书,用于确定那个证书可用

六、TLS服务器端Hello-握手协议

TLS服务器Hello常常是一个包含多个handshake消息的记录层,通常被表示为“TLSv1.2 Record layer”

TLS服务器Hello握手协议"server hello "通常包含:

1)期望的SSL会话ID

2)期望的密码套件

3)允许的签名算法(如果使用客户端证书认证)

七、TLS服务器Hello消息-证书

TLS服务器Hello消息将包含一个用于加密的证书公共密钥

证书记录包含了客户端进行验证所需要的所有数据

你可能感兴趣的:(使用Wireshark连接SSL调试)