ATS: HTTP/HTTPS 协议介绍

苹果在2017年要求 App 必须支持 HTTPS, 不过, 这个要求, 最后又被苹果自己延期了.

我只能说, 苹果的开发哥哥们真会玩…

该系列博客介绍 iOS 上面的 ATS 以及相关的 HTTPS 知识, 分为三篇来分享.

本篇是第一篇.

第二篇: ATS: HTTPS 认证

今天先简单了解一下 HTTPS 以及相关的知识.

相关名词

先了解一下相关的常用名词.

1.HTTP

HyperText Transfer Protocol, 超文本传输协议.

2.HTTPS

Hyper Text Transfer Protocol over Secure Socket Layer, 安全的超文本传输协议.

3.SSL

Secure Socket Layer, 安全套接字层.

4.TLS

Transport Layer Security, 传输层安全.其前身就是 SSL.

5.ATS

App Transport Security, 应用传输安全.

协议介绍

HTTP

HyperText Transfer Protocol, 超文本传输协议,是互联网上使用最广泛的一种协议,所有 WWW 文件必须遵循的标准.

HTTP 协议传输的数据都是未加密的, 也就是明文的, 因此使用 HTTP 协议传输隐私信息非常不安全.

默认使用 TCP 端口为 80.

HTTPS

安全的超文本传输协议, Hyper Text Transfer Protocol over Secure Socket Layer, 网景公式设计了 SSL(Secure Socket Layer) 协议用于对 HTTP 协议传输的数据进行加密,保证会话过程中的安全性.

默认使用 TCP 端口为 443.

拆分 HTTPS

SSL 协议加密方式

SSL 协议即用到了对称加密也用到了非对称加密(公钥加密),在建立传输链路时,SSL 首先对对称加密的密钥使用公钥进行非对称加密,链路建立好之后,SSL 对传输内容使用对称加密.

1.对称加密
速度高,可加密内容较大,用来加密会话过程中的消息.

2.公钥加密
加密速度较慢,但能提供更好的身份认证技术,用来加密对称加密的密钥.

HTTP+SSL

HTTPS, 可以看做是 HTTP+SSL, 所以重点在 SSL 上面.

HTTPS

在 HTTP (超文本传输协议)基础上提出的一种安全的 HTTP 协议,因此可以称为安全的超文本传输协议。

HTTP 协议直接放置在 TCP 协议之上,而 HTTPS 提出在 HTTP 和 TCP 中间加上一层加密层.

从发送端看,这一层负责把 HTTP 的内容加密后送到下层的 TCP,从接收方看,这一层负责将 TCP 送来的数据解密还原成 HTTP 的内容.

SSL(Secure Socket Layer)

是 Netscape 公司设计的主要用于 WEB 的安全传输协议.
它在 HTTPS 协议栈中负责实现上面提到的加密层.

一个 HTTPS 协议栈大致是这样的:
1

TLS

HTTPS,也称作 HTTP over TLS.

TLS(传输层安全, Transport Layer Security) 的前身是 SSL,TLS 1.0 通常被标示为 SSL 3.1,TLS 1.1 为 SSL 3.2,TLS 1.2 为 SSL 3.3.

苹果 ATS(App Transport Security), 要求支持 HTTPS 的 TLS 版本最低为 V1.2.

下图描述了在 TCP/IP 协议栈中 TLS(各子协议)和 HTTP 的关系:
1

其中 Handshake protocol,Change Ciper Spec protocol 和 Alert protocol 组成了 SSL Handshaking Protocols.

SSL 和 TLS 的发展历史:

1994年,NetScape 公司设计了 SSL 协议(Secure Sockets Layer)的 1.0 版,但是未发布.

1995年,NetScape 公司发布 SSL 2.0 版,很快发现有严重漏洞.

1996年,SSL 3.0 版问世,得到大规模应用.

1999年,互联网标准化组织 ISOC 接替 NetScape 公司,发布了 SSL 的升级版 TLS 1.0 版.

2006年和2008年,TLS 进行了两次升级,分别为 TLS 1.1 版和 TLS 1.2 版.最新的变动是2011年 TLS 1.2 的修订版.

TLS 1.3 改动会比较大,目前还在草案阶段.

HTTP 和 HTTPS 区别

HTTPS 和 HTTP 的区别主要为以下四点:

  1. HTTPS 协议需要到 CA 申请证书,一般免费证书很少,需要交费.

  2. HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SLL/TLS 加密传输协议(非对称加密).

  3. HTTP 和 HTTPS 不同的连接方式,用的端口也不一样,前者是 80,后者是 443.

  4. HTTP 的连接很简单,是无状态的;
    HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全.

坚持原创技术分享!