详解 SSL 握手流程

0 . 为什使用HTTP

HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。

一 . SSL 分为三种

1.只验证服务器的SSL握手过程
2.验证服务器和客户端的SSL握手过程
3.恢复原有会话的SSL握手过程

二. 只验证服务器的SSL握手过程(即单向认证)

1.浏览器:给出 (1)SSL协议版本号 (2)一个客户端生成的随机数(随机数A)(3)客户端支持的加密方法。
2.服务器:(1)确认加密方法,(2)发出证书cer,(3)发出随机数B
3.浏览器:(1)确认证书有效,(2)使用证书生成随机数C (3)使用证书cer 加密随机数C,发给服务器
4.服务器:利用私钥,得到随机数C.

截止到第四步,服务器:拥有 (1)随机数ABC,(2)双方约定的加密方法 客户端拥有:(1)随机数ABC,(2)双方约定的加密方法

5.服务器:利用加密方法,加密ABC,生成对话秘钥,加密整个对话过程

三. 交互过程中的 对称与非对称

1.握手过程,双方使用的RSA非对称加密方式,非对称加密安全,但是所耗资源大
2.握手完成之后,两者的通信则是使用对称加密方式。对称加密简单,效率比较高

四. 重要概念

1.单向认证: 只要求站点部署了ssl证书就行,任何用户都可以去访问,不需要客户端拥有CA证书。本质:客户端认证服务器,不是假冒的
2.双向认证:相比单向认证,服务器需要认证 客户端。

五.个人 疑惑

0.客户端如何认证 服务器发来的公钥呢?
确定:电脑内安装了一些CA,理解为证书颁发机构,CA可以验证公钥是否是正确的
1.单向认证哪来的 SSL版本信息,难道不需要证书么?不是跟单向认证概念中不需要CA证书冲突了么?
猜想:SSL版本从证书颁发机构读取。
2.双向认证 多了什么?
猜想:在客户端验证完服务器后,本来应该生成随机数C发给服务器的,但是多做了一步:将本地安装的CA证书 公钥 发送到服务器。服务器验证成功 继续 下一步,验证不成功 关闭,
3.单向安全么?
猜测:安全,只能拦截服务器发过来的 加密数据,并不能拦截客户端发送的加密方案,随机数。

六.个人简易总结

1.我 给你 SSL 随机数 加密方案
2.服务器 加密方案不错,我用了,给你一个 证书 和 随机数
3.客户端 这证书是对的,你是真的服务器,再给你一个随机数。

这个时候 都有 ABC 加密方案 ,然后生成一个会话秘钥。进行加密

你可能感兴趣的:(详解 SSL 握手流程)