HTTPS 解决了什么问题
一个简单的回答可能会是 HTTP
它不安全。由于 HTTP 天生明文传输的特性,在 HTTP 的传输过程中,任何人都有可能从中截获、修改或者伪造请求发送,所以可以认为 HTTP 是不安全的;在 HTTP 的传输过程中不会验证通信方的身份,因此 HTTP 信息交换的双方可能会遭到伪装,也就是没有用户验证
;在 HTTP 的传输过程中,接收方和发送方并不会验证报文的完整性
,综上,为了结局上述问题,HTTPS 应用而生。
什么是 HTTPS
你还记得 HTTP 是怎么定义的吗?HTTP 是一种 超文本传输协议(Hypertext Transfer Protocol)
协议,它 是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范,那么我们看一下 HTTPS 是如何定义的
HTTPS
的全称是 Hypertext Transfer Protocol Secure
,它用来在计算机网络上的两个端系统之间进行安全的交换信息(secure communication)
,它相当于在 HTTP 的基础上加了一个 Secure 安全
的词眼,那么我们可以给出一个 HTTPS 的定义:HTTPS 是一个在计算机世界里专门在两点之间安全的传输文字、图片、音频、视频等超文本数据的约定和规范。 HTTPS 是 HTTP 协议的一种扩展,它本身并不保传输的证安全性,那么谁来保证安全性呢?在 HTTPS 中,使用传输层安全性(TLS)
或安全套接字层(SSL)
对通信协议进行加密。也就是 HTTP + SSL(TLS) = HTTPS。
HTTPS 做了什么
HTTPS 协议提供了三个关键的指标
-
加密(Encryption)
, HTTPS 通过对数据加密来使其免受窃听者对数据的监听,这就意味着当用户在浏览网站时,没有人能够监听他和网站之间的信息交换,或者跟踪用户的活动,访问记录等,从而窃取用户信息。 -
数据一致性(Data integrity)
,数据在传输的过程中不会被窃听者所修改,用户发送的数据会完整
的传输到服务端,保证用户发的是什么,服务器接收的就是什么。 -
身份认证(Authentication)
,是指确认对方的真实身份,也就是证明你是你
(可以比作人脸识别),它可以防止中间人攻击并建立用户信任。
有了上面三个关键指标的保证,用户就可以和服务器进行安全的交换信息了。那么,既然你说了 HTTPS 的种种好处,那么我怎么知道网站是用 HTTPS 的还是 HTTP 的呢?给你两幅图应该就可以解释了。
HTTPS 协议其实非常简单,RFC 文档很小,只有短短的 7 页,里面规定了新的协议名,默认端口号443
,至于其他的应答模式、报文结构、请求方法、URI、头字段、连接管理等等都完全沿用 HTTP,没有任何新的东西。
也就是说,除了协议名称和默认端口号外(HTTP 默认端口 80),HTTPS 协议在语法、语义上和 HTTP 一样,HTTP 有的,HTTPS 也照单全收。那么,HTTPS 如何做到 HTTP 所不能做到的安全性呢
?关键在于这个 S
也就是 SSL/TLS
。