Http(Hypertext transfer protocol)是超文本传输协议,属于网络七层协议中的应用层, 基于TCP/IP协议, 用来规范客户端与服务器之间的传输协议.
Https(Hypertext transfer protocol over secure socket layer)是基于http后, 使用SSL/TLS建立安全通信, 加密数据包传输, 保证了数据传输的安全性.
1.http报文结构:
Request报文:
请求行(request line), 首部(header),实体(body)
Response报文:
状态行(status line), 首部(header),实体(body)
image.png
2. http和https的主要区别:
- http信息传输无法确认主机方身份
而https解决了信任主机的问题, 增加了数据来源的安全性 - http信息传输为明文传输, 极易被劫持和篡改
https采用SSL/TLS进行信息加密传输, 通讯过程中的数据不容易被篡改和泄露
采用故事的方式说明:
A和B两个人之间使用信件进行信息沟通, 邮差帮助传递信息,邮差就相当于http协议, 帮助我们进行信息的传递, 在这个通信过程中, 邮差可以随意的查看信件的内容,或者修改内容, 信息传递极其不安全, 中间有人可以伪造身份发送信息给对方, 无法确认来件身份.
3. https实现信息加密的过程:
先来了解两个概念:
对称加密: 加密和解密的秘钥是同一个
非对称加密: 有公钥和私钥一堆密码要, 私有只有服务器持有, 公钥加密只有私钥可以解密
为了解决信件传输过程中的安全性, 我们可以使用密码盒子将信件存放后传递, 双方只需要持有解开这个密码盒的钥匙就可以进行通信, 那么双方如何安全沟通获得这个秘钥呢? 其实这个就是TLS握手阶段进行的操作, 通过TLS握手协商获得客户端和服务器后续进行信息传递加密的秘钥.
image.png- 客户端(client)向服务器(server)发起请求
- server持有公钥和私钥, 将CA证书下发给客户端
- client验证证书的要有效性, 提取CA证书中的公钥,client生成一个随机码, 使用server的公钥对随机码进行加密,发送回server.
- server用私钥解密拿到随机码, 这个随机码就用作以后信息传递的对称秘钥(因为这个秘钥是客户端和服务器沟通的结果, 只有双方才能解开秘钥, 保证了信息的安全性传输), 使用随机码加密信息发送给client
- client解密, 获取信息
....
这篇文章中讲解了关于中间人攻击的问题: https://wetest.qq.com/lab/view/110.html
关于CA证书, 有一篇帖子写的很好 CA证书扫盲, Https讲解
网友评论