超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。
为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
一、HTTP和HTTPS的基本概念
HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。
二:HTTPS和HTTP的区别主要如下:
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
三:HTTPS 工作原理、工作流程
1. 客户端发起请求
2. 服务端配置公钥、私钥。如果是使用购买的证书,把公钥告诉客户端。
3. 服务端把当前此次请求的证书(公钥)传送过来
4. 客户端进行证书解析
这部分工作是有客户端的TLS来完成的(客户端提前拿到CA根证书),首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。 如果没有问题,就回生成一个随机值,并使用公钥对随机值进行加密,将密文传输给服务端。
5.服务端解密信息
服务端用私钥解密后,得到了客户端传过来的随机值,利用这个随机值把传输的内容进行对称加密。
7. 通信。客户端:明文内容+随机数加密---->对称加密,发送密文给服务端,服务端通过随机数解密拿到客户端传输的明文内容。
注:证书包含签名、发布机构、所有者、有效期、签名算法
加密过程中的对称加密非对称加密
首先用的是非对称加密。把公钥给客户端,私钥在服务端。客户端用公钥验证通过后,会生成私钥进行对称加密。然后传给后台。
为什么这么做呢。
- 对称加密加密与解密使用的是同样的密钥,所以速度快,但由于需要将密钥在网络传输,所以安全性不高。
- 非对称加密使用了一对密钥,公钥与私钥,所以安全性高,但加密与解密速度慢。
- 所以第一次用公钥私钥验证。没问题之后,在用对称加密。这样既安全又高效。
常见的对称加密、非对称加密
1:对称加密:RC4、DES、3DES、AES(安全)、ChaCha20(安全)
2:非对称加密:DH、DSA、RSA(常用)、ECC(常用)
参考:https://www.jianshu.com/p/7a40e874f6c2