ATS: HTTP/HTTPS 协议介绍
苹果在2017年要求 App 必须支持 HTTPS
,不过, 这个要求,,最后又被苹果自己延期了。我只能说,苹果的开发哥哥们真会玩…
但是不管怎么说,作为一名合格的程序员还是有义务和责任了解并理解 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
HTTP 全称是 HyperText Transfer Protocol
,即超文本传输协议,是互联网上使用最广泛的一种协议,所有 WWW 文件必须遵循的标准。
HTTP 协议传输的数据都是未加密的, 也就是明文的,因此使用 HTTP 协议传输隐私信息非常不安全。默认使用 TCP 端口 80
.
HTTPS
安全的超文本传输协议,Hyper Text Transfer Protocol over Secure Socket Layer
,网景公式设计了 SSL(Secure Socket Layer) 协议用于对 HTTP 协议传输的数据进行加密,保证会话过程中的安全性。
HTTPS 协议默认使用 TCP 的 443
端口。
拆分 HTTPS
SSL 协议加密方式
SSL 协议即用到了对称加密也用到了非对称加密(公钥加密),在建立传输链路时,SSL 首先对对称加密的密钥使用公钥进行非对称加密(主要用于证书校验,这里指的证书是CA认证机构颁发的证书也就是常说的数字证书),链路建立好之后,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 协议栈大致是这样的:
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 的关系:
其中 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 协议更加安全。