HTTP 和 HTTPS
如果你之前了解过计算机网络,那么你一定听说过 HTTP 协议。HTTP 协议的全称为 HyperText Transfer Protocol,即超文本传输协议。
HTTP 协议位于 OSI 七层网络模型中的第七层——应用层。Web 服务器上的所有资源的传输都遵守该协议,用户通过浏览器进行资源的查看和下载。
RFC 2616 定义了 HTTP 1.1。
简单回顾一下 HTTP 协议的内容,主要由三部分组成:
- 起始行
- 首部
- 实体
HTTP 请求
HTTP 响应
回到我们的正题 HTTPS,其比 HTTP 多了一个 S。S 即 Safe,安全,我们可以知道 HTTPS 基于 HTTP,但是比其更加安全。
事实上是 HTTPS 是在原先的 HTTP 中加入了 SSL/TLS。SSL/TLS 是指一个安全的协议。SSL 是 NetScape 公司对这个安全协议的称呼。而 TLS 是 ISOC 组织将这个安全协议标准化后的称呼。所以两者是指一个东西,现在多称呼 TLS,传输层安全协议(Transport Layer Security)。
HTTPS 的特点
我们知道任何一样事物不会无缘无故出现,也不会无缘无故消失。
之所以会出现 HTTPS,主要是由于安全问题。在之前博客中,我提到了 Web 传输过程中的问题,正是由于 HTTP 协议的不足所造成的。
普通的 HTTP 通信,其内容是不加密的,可能遇到这些问题:
- 内容窃听
- 内容篡改
- 请求冒充
而 HTTPS 正是用来解决这些问题的:
- 所有信息都是加密传播,第三方无法窃听
- 具有校验机制,一旦被篡改,通信双方会立刻发现
- 配备身份证书,防止身份被冒充
HTTPS 的原理
当我们访问一个网站时,如果该网站使用的是 HTTPS 协议,那么就先会经过 TLS 握手。
- 客服端(即浏览器)向服务器(访问网站)发送一次请求:
- 支持的版本协议,如 TLS 1.0
- 一个随机码,用于“对话密钥”
- 支持的加密方法,如 RSA 公钥加密
- 支持的压缩方法
- 服务器回应客户端:
- 确认加密协议
- 一个随机码,用于“对话密钥”
- 确认加密方法
- 服务器证书
- 客户端回应服务器:
- 一个随机码,用服务器公钥加密,防止被窃听
- 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送
- 客户端握手结束通知,表示客户端的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供服务器校验
- 服务器回应客服端:
- 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送
- 服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供客户端校验
在 TLS 握手过程中,主要经历上面这四个步骤。HTTPS 与 HTTP 的不同在于后者内容采用明文传输,而前者内容采用加密传输。传输内容的加密方法采用的是对称加密,速度快。
为了保证对称加密密钥的安全,HTTPS 对对称加密密钥的交换采用 RSA 非对称加密。非对称加密有公钥和私钥,公钥可以公开透明,让任何人知道,但私钥一定要保密。
HTTPS 的应用
HTTPS 最直接的应用就是给网站加上一个小绿锁。HTTPS 证书申请有两种,免费和收费的。
SSL For Free 这个网站可以免费获取数字证书,有效时间 90 天。时间到了,那你必须重新获取一个证书。
在获取证书后,如何配置我们的服务器呢?在 SSL For Free 网站的下方我们可以看到下图区域,根据我们的服务器平台,点击对应链接即可。
如果你是阿里云用户,它也提供了一个入口,我们通过其后台也可以免费获取数字证书。
点击单域名数字证书即可获取免费证书,其证书的有效时间为一年。
阿里云也提供了配置证书的教程,如下图所示:
参考