1.https作用
Secure Hypertext Transfer Protocol(安全超文本传输协议),是在http协议基础上增加了使用SSL加密传送信息的协议,从而保证信息传输的安全性。
2.https原理
主要采用了SSL的握手获取对称秘钥,从而服务器和客户端通过该秘钥对数据进行加密和解密。由于客户端和服务端是通过对称秘钥加解密,也保证了加解密的效率。
3.SSL握手过程
3.1.客户端发送请求
- 发送一个随机数n1
- 发送支持的加密方式
- 支持的协议版本,如TSL1.0版本
3.2.服务端回应
- RSA方式:生成RSA公钥和私钥,发送RSA的公钥;DH加密方式:生成DH公钥和私钥,发送DH的公钥
- 发送一个随机数n2
- 发送确认的加密方式和确认的协议
3.3.客户端回应
- RSA加密方式:根据服务器RSA公钥生成随机数n3;DH加密方式:根据服务器DH公钥生成本地公钥和私钥,通过服务器DH公钥和客户端生成的私钥生成随机数n3
- RSA加密方式:发送随机数n3;DH加密方式:发送客户端生成的公钥
- RSA加密方式:n3加密前的值+n1+n2生成对称加密秘钥;DH加密方式:n3+n1+n2生成对称加密秘钥
- 发送结束通知和客户端握手结束通知,后续使用双方协商的加密方式加密
3.4.服务端回应
- RSA加密方式:根据本地私钥解密随机数n3,n3解密后的值+n1+n2生成对称加密秘钥;DH加密方式:通过客户端的公钥和本地私钥生成随机数n3,n3+n2+n1生成对称加密秘钥
- 向客户端发送确认加密结束握手的通知,并表示随后都是用双方协商的加密方式加密
4.SSL过程中如何保证公钥不被篡改
将公钥放在数字证书中,只要证书可信,公钥就是可信的。而证书中的公钥通过操作系统内置的CA公钥解密数字证书,解密后的数据中的域名是否和请求的域名相等,就可知道是否被篡改。由于中间人攻击无法获得CA的私钥,所以无法将自己的公钥加密到数字证书中。
5.数字证书和数字签名
- 数字签名:
- 服务器端是对传输的数据,通过私钥加密后的数据就是签名
- 客户端比较数据和通过公钥解密签名的数据是否一致,就防止了数据被篡改
- 数字证书:由证书机构进行数字签名
- 服务端通过证书机构,对传输的数据进行私钥加密,然后将数据和证书传输给客户端
- 客户端通过证书机构的公钥进行解密操作,确认数据与传输的数据一致