您的位置:首页 > 理论基础 > 计算机网络

关于HTTPS

2016-08-01 00:00 246 查看
摘要: HTTPS

摘要

HTTPS SSL/TLS

HTTP是干什么的?

HTTP 是一个网络传输协议,是专门用来帮你 传输 Web 内容 的。大部分网站都是通过 HTTP 协议来传输 Web 页面、以及 Web 页面上包含的各种东西(图片、CSS 样式、JS 脚本)。【HTTPS本身并非协议,而是标准的HTTP协议架在SSL/TLS协议之上的一种结构。(一种不太合适的说法可以认为是两种协议的叠加】。

SSL/TLS是干什么的?

全称“Secure Sockets Layer”的缩写,中文叫做“安全套接层”。由网景公司在上世纪90年代中期设计的。

发明这个的原因是:因为原先互联网上使用的 HTTP 协议是明文的,存在很多缺点——比如传输内容会被偷窥(嗅探)和篡改。发明 SSL 协议,就是为了解决这些问题。到了1999年,SSL 因为应用广泛,已经成为互联网上的事实标准。IETF 就在那年把 SSL 标准化。标准化之后的名称改为 TLS(是“Transport Layer Security”的缩写),中文叫做“传输层安全协议”。
可以把这两者并列称呼(SSL/TLS),因为这两者其实是同一个东西的不同阶段。

(简单一句话:就是对信息加密传输防止被 窃取&篡改 。以前叫SSL 后来被标准化后改名为TLS)

HTTPS是干什么的?

HTTPS 协议,说白了就是“HTTP 协议”和“SSL/TLS 协议”的组合。可以把 HTTPS 大致理解为——“HTTP over SSL”或“HTTP over TLS”(反正 SSL 和 TLS 差不多,都是指的同一个东西)。

HTTP协议的特点

1.HTTP的版本和历史

如今用的 HTTP 协议,版本号是 1.1(也就是 HTTP 1.1)。这个 1.1 版本是1995年底开始起草的(技术文档是 RFC2068),并在1999年正式发布(技术文档是 RFC2616)。
在 1.1 之前,还有曾经出现过两个版本“0.9 和 1.0”,其中的 HTTP 0.9 【没有】被广泛使用,而 HTTP 1.0 被广泛使用过。
另外,现在(2015年) IETF 已经发布 HTTP 2.0 的标准了。【现在名字叫:HTTP/2】

2.HTTP 和 TCP之间的关系

简单地说,TCP 协议是 HTTP 协议的基石——HTTP 协议需要依靠 TCP 协议来传输数据。

网络分层模型中,TCP称为"传输层协议",HTTP称为"应用层协议",有很多常见的应用层协议是以 TCP 为基础的,比如“FTP、SMTP、POP、IMAP”等。
TCP 被称为“面向连接”的传输层协议。你只需知道:传输层主要有两个协议,分别是 TCP 和 UDP。TCP 比 UDP 更可靠。你可以把 TCP 协议想象成某个水管,发送端这头进水,接收端那头就出水。并且 TCP 协议能够确保,先发送的数据先到达(与之相反,UDP 不保证这点)。

3.HTTP协议如何使用TCP连接

HTTP 对 TCP 连接的使用,分为两种方式:俗称“短连接”和“长连接”(“长连接”又称“持久连接”,英文叫做“Keep-Alive”或“Persistent Connection”)
假 设有一个网页,里面包含好多图片,还包含好多【外部的】CSS 文件和 JS 文件。在“短连接”的模式下,浏览器会先发起一个 TCP 连接,拿到该网页的 HTML 源代码(拿到 HTML 之后,这个 TCP 连接就关闭了)。然后,浏览器开始分析这个网页的源码,知道这个页面包含很多外部资源(图片、CSS、JS)。然后针对【每一个】外部资源,再分别发起一 个个 TCP 连接,把这些文件获取到本地(同样的,每抓取一个外部资源后,相应的 TCP 就断开)
相反,如果是“长连接”的方式,浏览器也会 先发起一个 TCP 连接去抓取页面。但是抓取页面之后,该 TCP 连接并不会立即关闭,而是暂时先保持着(所谓的“Keep-Alive”)。然后浏览器分析 HTML 源码之后,发现有很多外部资源,就用刚才那个 TCP 连接去抓取此页面的外部资源。

在 HTTP 1.0 版本,【默认】使用的是“短连接”(那时候是 Web 诞生初期,网页相对简单,“短连接”的问题不大);到了1995年底开始制定 HTTP 1.1 草案的时候,网页已经开始变得复杂(网页内的图片、脚本越来越多了)。这时候再用短连接的方式,效率太低下了(因为建立 TCP 连接是有“时间成本”和“CPU 成本“)。所以,在 HTTP 1.1 中,【默认】采用的是“Keep-Alive”的方式。

对称加密 和 非对称加密是干什么的?

加密:就是把“明文”变成“密文”

解密:就是把“密文”变为“明文”

在这两个过程中,都需要一个关键的东西——叫做“密钥”

对称加密: “加密”和“解密”使用【相同的】密钥。

非对称加密技术:“加密”和“解密”使用【不同的】密钥。

CA证书的原理及用途 (以后分篇细说)

为什么要用HTTPS呢?

兼容性:

1. HTTPS 还是要基于 TCP 来传输(如果改为 UDP 作传输层,无论是 Web 服务端还是浏览器客户端,都要大改,动静太大了)

2. 单独使用一个新的协议,把 HTTP 协议包裹起来(所谓的“HTTP over SSL”,实际上是在原有的 HTTP 数据外面加了一层 SSL 的封装。HTTP 协议原有的 GET、POST 之类的机制,基本上原封不动)打个比方:如果原来的 HTTP 是塑料水管,容易被戳破;那么如今新设计的 HTTPS 就像是在原有的塑料水管之外,再包一层金属水管。一来,原有的塑料水管照样运行;二来,用金属加固了之后,不容易被戳破。

可扩展性:

HTTPS 相当于是“HTTP over SSL”。SSL/TLS除了能跟 HTTP 搭配,还能够跟其它的应用层协议搭配。 可以跟很多常用的应用层协议(比如:FTP、SMTP、POP、Telnet)搭配,来强化这些应用层协议的安全性。接着刚才打的比方:如果把 SSL/TLS 视作一根用来加固的金属管,它不仅可以用来加固输水的管道,还可以用来加固输煤气的管道。

保密性:

HTTPS 需要做到足够好的保密性。能够对抗嗅探(行话叫 Sniffer)。所谓的“嗅探”,通俗而言就是监视你的网络传输流量。如果你使用明文的 HTTP 上网,就知道你在访问哪些网站的哪些页面。
HTTPS 还要能对抗其它一些稍微高级的攻击手法——比如“重放攻击”

完整性(防篡改)

在发明 HTTPS 之前,由于 HTTP 是明文的,不但容易被嗅探,还容易被篡改。
举个例子:
比 如咱们天朝的网络运营商(ISP)都比较流氓,经常有网友抱怨说访问某网站(本来是没有广告的),竟然会跳出很多中国电信的广告。为啥会这样捏?因为你的 网络流量需要经过 ISP 的线路才能到达公网。如果你使用的是明文的 HTTP,ISP 很容易就可以在你访问的页面中植入广告。
所以,当初设计 HTTPS 的时候,还有一个需求是“确保 HTTP 协议的内容不被篡改”

真实性(防假冒)

举个例子:
你因为使用网银,需要访问该网银的 Web 站点。那么,你如何确保你访问的网站确实是你想访问的网站?(这话有点绕口令)
有 些天真的同学会说:通过看网址里面的域名,来确保。为啥说这样的同学是“天真的”?因为 DNS 系统本身是不可靠的(尤其是在设计 SSL 的那个年代,连 DNSSEC 都还没发明)。由于 DNS 的不可靠(存在“域名欺骗”和“域名劫持”),你看到的网址里面的域名【未必】是真实的!所以,HTTPS 协议必须有某种机制来确保“真实性”的需求(至于如何确保, 以后会细聊)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  HTTPS