发布网友 发布时间:2022-12-10 20:40
共1个回答
热心网友 时间:2023-07-13 19:44
Windows PC电脑;
国密SSL VPN客户端(浏览器);
Wireshark客户端(需支持国密协议版本, github地址 ),用于查看握手数据。
打开wireshark客户端,监听对应的网卡。可以在联网时通过wireshark查看哪个网卡有网络波动,选择对应的网卡。
Wireshark设置按照IP过滤,设置SSL VPN连接的国密服务器IP过滤。IP地址即为安全接入的网关或安全服务的地址。
此时可以看到通过GMTLS协议的握手数据。根据请求我们具体分析。
客户端向服务端发送Client Hello消息,传送客户端支持的最高 SSL 协议的版本号、随机数、加密算法列表,以及其他所需信息。Client Hello消息的内容如下图所示:
服务端收到客户端建立SSL连接的请求后,通过发送Server Hello消息向客户端传送SSL 协议的版本号、随机数、会话ID、加密算法的种类以及其他相关信息。消息内容如下:
同时服务端向客户端发送包含其证书的Certificate消息。证书中所携带服务端的公钥。如下图所示:
发送Certificate Request消息,要求服务端上报证书,如下图所示:
客户端发送Client Key Exchange和Change Cipher Spec消息,Client Key Exchange包含使用服务器公钥加密过的随机数Pre_Master_Secret,该参数用于后续生成主密钥。 (此处客户端使用前面提到的两个随机数,再生成第三个随机数,然后通过服务端证书中的公钥对第三个随机数加密,生成该Pre_Master_Secret ) **;Change Cipher Spec消息告诉服务器,接下来的消息将采用新协商的加密套件和密钥进行通信,并通知客户端到服务器的握手过程结束。如下图所示:
服务端同样发送Change Cipher Spe消息通知服务端到客户端的握手过程结束,并发送一个加密的握手数据Encrypted Handshake Message 消息,客户端收到消息解密后进行验证,验证通过则说明握手过程中的数据没有被篡改过,也说明服务端是之前交换证书的持有者。现在双方就可以开始加密通信。如下图所示: