HTTP + 通讯加密 + 认证机制 + 保护报文完整型 = HTTPS

前言

做为开发,先后端交互离不开网络通讯,咱们平常使用的HTTP(S),你真的了解吗?尝试回答下面的问题,看看有没有遇到你的短板。若是还有问题不明白,就请继续阅读本文,我来为你答疑解惑。后端

  • 什么是HTTP,它有哪些缺陷?
  • TCP/IP是什么,有哪些协议层,几回握手?
  • 什么是公钥、私钥,为何须要公钥私钥,以及什么是(非)对称密钥加密?
  • 什么是证书,为何须要证书,证书是个什么东西?
  • 什么是HTTPS,跟HTTP有什么区别?

HTTP

HTTP(超文本传输协议)最初是做为 Web 文档传输协议。它出现的主要目的是为了解决文本传输的难题。因为协议自己很是简单,因而在此基础上加了不少应用方法投入了实际使用。浏览器

HTTP至关方便,然而 HTTP 并不是只有好的一面,它也有不足之处。 主要不足以下:安全

  • 通讯使用明文可能会被窃听
  • 不验证通讯方的身份可能遭遇假装
  • 没法证实报文的完整型,可能已遭篡改

TCP/IP

TCP/IP 是个协议族,TCP和IP是两种协议, 一般咱们称 TCP/IP 为TCP/IP协议。最重要的一点是它是分层的:应用层、传输层、网络层和数据链路层。服务器

层.jpeg

3次握手.jpeg

HTTPS

今天的大BOSS来了,解决完HTTP的缺陷问题,就是HTTPS(超文本传输安全协议)了。睁大眼睛往下看。网络

加密处理防止被窃听

针对HTTP的 问题一:通讯使用明文可能会被窃听,设计加密,加密的对象有那么几个:通讯的加密 + 内容加密。网站

通讯的加密

HTTP协议中没有加密机制,和SSL(Secure Socket Layer)组合使用,加密HTTP的通讯内容。用SSL创建安全通讯线路,就能够在这条线路上通讯了。与SSL组合使用的HTTP就被称为 HTTPS(超文本传输安全协议)。加密

安全通讯图设计

内容加密

针对HTTP协议传输的内容自己加密。HTTP报文:报文首部 + 报文主体,报文首部不作加密处理,报文主体的内容会被加密处理。前提须要客户端和服务器同时具有加密和解密机制。code

内容加密.jpeg

验证通讯方的身份,查明对方的证书

HTTP协议中的请求和响应不会对通讯方进行确认。任何人均可以发起请求。没法肯定目标客户端和目标服务器。HTTP不能够,可是SSL可协议经过证书的手段能够肯定对方。cdn

证书:是值得信任的第三方机构颁发的,用以证实服务器和客户端是实际存在的。

为何证书就能确认呢?由于伪造证书从技术角度来异常困难,因此只要可以确认通讯方持有的证书,就能够判断通讯方的真实意图,

证书.jpeg

确认报文的完整性

请求或者响应的内容遭到篡改,HTTP是没办法确认的。

请求或者响应在传播途中,遭攻击者拦截并篡改内容的攻击称为中间人。

HTTP直接和TCP通讯,当使用了SSL时,则演变成先和SSL通讯,再由SSL和TCP通讯。所谓的HTTPS,其实就是身披SSL协议的外壳的HTTP。就目前来讲,SSL是当今世界上应用最为普遍的网络安全技术。

加密技术

共享密钥加密

加密和界别同用一个密钥的方式称为共享密钥加密,也叫作对称密钥加密。只要拿到密钥,任何人都能破解密钥。

存在的问题:

  • 发送密钥有被监听的风险,不发送,对方就不能解密;
  • 怎样安全的发送密钥,保管密钥。

使用两把密钥的公开密钥加密

公开密钥使用一对非对称加密的密钥。一把叫作私有密钥,一把叫作公开密钥。公开密钥能够随意的公开,私有密钥不能让别人知道。

使用公开密钥进行加密,通讯对方收到被加密的密文,用私钥进行解密,这就就不用将密钥发送来发送去了。

HTTPS 采用混合加密机制

HTTPS使用了二者并用的混合加密机制,利用二者的优点,组合起来用户通讯。在交换密钥环节使用开发密钥加密方法,以后的创建通讯交换报文阶段则使用共享密钥加密方式。

https混合加密.jpeg

如何证实公开密钥的正确性呢

公开密钥加密存在一些问题,没法证实公开密钥就是货真价实的公开密钥。为了解决这个问题,能够是使用由数字证书认证机构和其它相关机关颁发的公开密钥证书。

由公开密钥申请,数字证书认证机构会对公开密钥作数字签名。公钥证书也叫作数字证书或证书。客户端经过私钥来进行验证。一旦验证经过,客户端即可明确了两件事:

  1. 认证服务器的公开密钥是真实有效的数字证书认证机构。
  2. 服务器的开发密钥值得信赖。

咱们本身给浏览器安装的证书 — 自签名证书

一般咱们开发HTTPS的项目的时候,浏览器访问就会提示:没法确认链接安全性 或者 该网站的安全证书存在问题。影响咱们开发,咱们采用自签名证书来解决这个问题。

自签名证书你们都会生成安装吧,这里就不赘述了。

如今回头看看上面问题,都能解答了吧。笔者最近在阅读《图解HTTP》,此次将 HTTPS 相关知识进行梳理总结,方便之后查看,文中插图均来自此书。此书图文结合,浅显易懂,推荐你们也读一下。

相关文章
相关标签/搜索