SSL握手过程详解
来源:互联网 发布:医保控费软件 编辑:程序博客网 时间:2024/06/05 15:39
(1) 客户端->服务器端 发送ClientHello:
客户端向服务器发送ClientHello信息,如:协议的版本号,版本信息,随机 数C1ientHello1.Random,加密方式(对称加密算法有DES和RC5,密钥交换算 法有RSA和DH,摘要算法有MD5和SHA),客户端公钥等发送给服务器;
(2) 服务器端->客户端 发送ServerHello:
服务器向客户端回答ServerHello, 以及确定加密的组合方式等信息。
(3) 服务器端->客户端 发送Certificate:
服务器产生一个随机数ServerHello.Random,和服务器的公钥(同常和其数字 证书Certificate放在同一个文件),这些都经由之前获取到的客户端的公钥进 行加密后发送给客户端,
(4) 服务器端->客户端 发送ServerHelloDone:
验证成功后,服务器向客户端发送ServerHelloDone消息,达成了握手协议,即双方握手接通。
服务器向客户端要求证书(这是可选择的,即:可以不向客户端索要)。
(5) 客户端->服务器端 发送ClientKeyExchange,ChangeCipherSpec,Finished:
客户端用客户端的私钥解密收到的信息,从解密后的信息中获取服务器公钥和证书信息。
if(用手头的CA公钥解密服务器的证书后,验证通过)
if(服务器端未索要证书)
单向认证,客户端向服务器端发送Finished信息;
else if(服务器端索要了证书)
双向认证,客户端向服务器端发送证书,并且服务器端必须对 此证书验证。
if(服务器端验证通过)
客户端向服务器端发送Finished信息;
elseif(验证未通过)
断开连接,握手失败,exit 1
产生新的随机数,然后用获取到的服务器公钥加密随机数 C1ientHello2.Random、ClientKeyExchange和ChangeCipherSpec信息,
然后发送给服务器。
else if(验证失败)
断开连接, 握手失败, exit 1。
(6) 服务器端->客户端 发送ChangecipherSpec和Finished:
服务器端用服务器的私钥解密获取到的随机数C1ientHello2.Random和ClientKeyExchange和ChangeCipherSpec信息
服务器发送握手完成的信息Finished,SSL安全通道开启;
(7) 服务器端<->客户端 对称加密传输:
客户端和服务器端开始使用相同的对称密钥进行数据通讯,同时进行通讯完整性的检验。
- SSL握手过程详解
- SSL握手过程详解
- SSL握手过程详解
- SSL交互(握手)过程详解
- SSL交互(握手)过程详解
- SSL交互(握手)过程详解
- SSL/TLS 握手过程详解
- SSL交互(握手)过程详解
- SSL/TSL握手过程详解
- SSL握手过程
- SSL握手过程
- 双向SSL握手过程
- SSL握手过程
- SSL握手过程
- SSL握手过程
- SSL 握手过程
- SSL握手过程
- SSL握手过程
- linux利用shell实现守护进程的脚本
- Android 下拉刷新控件
- C++ string使用for改变为何必须使用引用
- 心性的刚强,男人
- Laravel 学习笔记——路由(路由与控制器)
- SSL握手过程详解
- 工作需要学习的东西之 telnet
- (十二)Beans自动装配(Auto-Wiring)
- 阻止事件冒泡\阻止默认行为
- 常用OpenCV 2.0库函数速查和OpenCV 3.0函数索引
- Spring Url映射
- Tomcat并发数优化和设置
- 两步搞掉电脑开机密码
- 创建表空间和追加脚本