HTTPS
https简单来说就是加密过的http协议 。 使用ssl(secure sockets layer 安全套接字层)协议用于对http协议传输的数据进行加密,ssl目前的版本是3.0 。
HTTPS在真正的请求数据之前,会跟服务器进行握手验证,以确认身份。
验证流程
1.客户端发起一个https请求,把自身自持的一系列(Cipher Suite 密钥算法套件) 发送给服务端
2.服务端接收到客户端发送的cipher后,与自身支持的cipher进行对比,若不支持直接断开连接。若支持,则选出一个加密算法和hash算法,以证书的形式返回给客户端,证书中包含了公钥,网址,失效日期等。
3.客户端接收到服务端的响应后会做这些事:
- 验证证书的合法性
- 生成随机密码:浏览器生成一个随机数密码,用证书中的公钥进行加密
- hash握手信息并加密:用约定好的hash方式,取握手信息的hash值,然后用上一步生成的随机数密码进行加密,形成一个签名,并发给服务端。
4.服务端收到客户端发来的密文,用证书中的公钥解密先取出随机数密码,再用这个密码解密得到握手信息的hash值,与客户端发来hash值进行比较。然后用随机密码加密,将握手信息和hash值返回客户端。
5.客户端进行相关解密拿到握手信息中的hash值,跟服务器返回的hash进行比较,若一致,则握手过程结束。
特点:
握手过程结束后:客户端和服务端之后的通信数据将用之前浏览器生成的随机密码并用对称加密算法进行加密,因为这串密码只有客户端和服务端知道,所以能够保证通信过程的安全。
涉及算法:
非对称加密算法:RSA ,DSA /DSS
对称加密算法:AES , RC4 , 3DES
hash算法 : MD5 , SHA1 , SHA256