今天打算是把本站点下接入https的服务,因为原来的工作中稍微有些涉猎,所以没当回事儿就搞了起来。

1.首先要了解一下什么是http和https

http:超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。

https:(全称:Hyper Text Transfer Protocol over SecureSocket Layer)http+ssl,是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 。HTTPS 在HTTP 的基础下加入SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面。

HTTP VS HTTPS:

HTTP特点:

无状态:协议对客户端没有状态存储,对事物处理没有“记忆”能力,比如访问一个网站需要反复进行登录操作
无连接:HTTP/1.1之前,由于无状态特点,每次请求需要通过TCP三次握手四次挥手,和服务器重新建立连接。比如某个客户机在短时间多次请求同一个资源,服务器并不能区别是否已经响应过用户的请求,所以每次需要重新响应请求,需要耗费不必要的时间和流量。
基于请求和响应:基本的特性,由客户端发起请求,服务端响应
简单快速、灵活
通信使用明文、请求和响应不会对通信方进行确认、无法保护数据的完整性

下面通过一个简单的抓包实验观察使用HTTP请求传输的数据:
这里写图片描述

这里写图片描述

HTTPS特点:

基于HTTP协议,通过SSL或TLS提供加密处理数据、验证对方身份以及数据完整性保护

这里写图片描述

通过抓包可以看到数据不是明文传输,而且HTTPS有如下特点:

  • 内容加密:采用混合加密技术,中间者无法直接查看明文内容
  • 验证身份:通过证书认证客户端访问的是自己的服务器
  • 保护数据完整性:防止传输的内容被中间人冒充或者篡改    

好,http与https就讲到这里

2.如何接入https协议

既然知道https协议采用密文传输,更加安全,那么如何使用这个服务呢?在这里我以阿里云平台购买ssl证书服务为例,首先找到阿里云平台的ssl控制台

点击购买证书服务,选择免费型,当然有钱的主我也推荐购买前面的几种。

一波购买之后回到ssl控制台,这时你就会发现你的平台上多了一个ssl证书列表,点击下载。
  • 这时候会有多种下载格式任你挑选,有tomcat,apache,nginx,iis等。因为我的web服务器是nginx,所以就下载对应的类型,在nginx类型中一共有两个文件:
  • .pem:证书文件。PEM文件的扩展名为CRT格式。
  • .key:证书的密钥文件。申请证书时如果未选择自动创建CRS,则下载的证书文件压缩包中不会包含.key文件,需要您将自己手动常见的私钥文件拷贝到cert目录下。
  • 那么登陆到自己的服务器里面,在nginx工作目录里建立一个cert的文件夹,在cert文件夹中上传下载好的证书(两个文件)
  • 然后去你的项目目录中配置ssl,注意!如果你还想继续使用http服务,请在配置中添加listen 80(如果你的http服务端口是80的话),在这里我就是因为没有配置http的端口,而是直接把80端口换成了443端口,导致我访问的网站变成了另一个项目,差了整整一天才发现这个问题!一定要注意。
  • 配置完成之后,通过nginx -t检查配置文件无误后 nginx -s reload 重启。再去访问你的站点,你就会发现https协议下的网站可以访问了!