HTTP与HTTPS的区别
HTTPS比 HTTP(超文本传输协议)多了一个S,代表Security,具有更好的安全性。简单说,HTTPS就是在HTTP和TCP/IP之间加了一层SSL/TLS协议。 端口上,HTTP是80,HTTPS是443。 传输协议上,HTTP是明文传输(虽然POST在报文中,看起来比GET在URL安全,但实际都不安全),HTTPS是加密传输。
HTTP的工作过程
HTTP由请求和响应构成,是一个标准的客户端服务器模型(C/S)。HTTP协议永远都是客户端发起请求,服务器回送响应。
- 地址解析。域名系统DNS解析域名得到主机的IP地址。
- 建立TCP连接(TCP的三次握手)。
- 客户机向服务器发送一个HTTP请求。
- 服务器处理请求。
- 服务器返回一个HTML响应。
- 客户端解析报文,解析HTML代码,并渲染。
HTTPS的加密原理
先说两个概念: 对称加密:加密和解密用的是同一把秘钥。 非对称加密:加密和解密用的不是同一把秘钥,有公钥和私钥之分,安全性高,但是算法复杂,速度慢。
- 服务器向数字认证机构(CA)注册自己的公钥。
- CA机构用私钥给服务器的公钥署数字签名,颁发数字证书。数字签名算法也是非对称加密的一种,目前最广泛应用的是RSA算法,主要包括MD和SHA两种算法。
- 客户端向服务器发起一个安全连接的请求,服务器会返回经CA认证的数字证书,证书中包含了服务器的公钥。
- 客户端拿到数字证书后,用浏览器内置的CA证书公钥解开数字签名,拿到服务器的公钥。
- 客户端用服务器的公钥加密一个接下来用于对称加密的秘钥A,发给服务器(只有服务器的私钥可以解开,所以不担心中间人拦截问题)
- 服务器用自己私钥解开,得到秘钥A,接下来客户端和服务器就用秘钥A进行对称加密通信。
|