https详解
http与https时属于应用层的协议,udp与tcp属于传输层
SSL与TLS是什么关系
SSL是最早的加密协议,由网景公司(Netscape)开发。它包括SSL 1.0、2.0和3.0版本,但由于安全漏洞,SSL 2.0和3.0已被弃用。TLS是SSL的后续版本,由IETF(Internet Engineering Task Force)制定。TLS 1.0通常被视为SSL 3.1,因为它是在SSL 3.0的基础上进行了改进和标准化。目前,TLS已经发展到1.3版本,提供了更高的安全性和性能。
https=证书+TLS握手
证书
证书是服务器用于向客户端证明自己身份的密钥,证书可以级联授权,微软等操作系统出场会预置跟证书,根证书会授权一系列证书签发机构,而证书签发机构又会授权一系列经过验证的网站,从而完成级联授权,用户根据手中的根证书就可以验证网站证书的真假。
TLS握手过程
-
TCP协议三次链接握手
-
客户端发送Client Hello(http)声明支持的加密套件和TLS版本+随机数1
-
服务端发送Server Hello(http)确认支持的TLS版本与最终选择的加密套件+随机数2
-
服务端发送Certificate(http)传递证书供客户端验证
-
服务端发送Server Key Exchange(http)传递公钥
注:1. 只有早期版本的请求才会有这一步,新版本的握手会直接使用第4步获得的证书作为公钥完成加密,证书与key的本质就是非对称加密
- 登录网银等特殊场景下,服务端会在这一步要求客户端发送证书
-
服务端发送Server Hello Done(http)表示请求完毕
-
客户端发送Client Key Exchange将随机数3用得到的公钥加密后发送
-
客户端发送Change Cipher Spec,表示非堆成加密结束,接下来使用对称加密继续https通讯
-
客户端发送Ebcrypted Handshake Message表示对称加密通信开始
-
服务端发送Ebcrypted Handshake Message确认对称加密通信开始
总结
随机数1,2,3在一起通过特殊算法可以计算得到对称加密密钥,从而完成密钥交换