加入咱们一块儿学习,每天进步html
1. HTTP 协议
1.1 HTTP 协议介绍
应用层
。

-
请求
POST http://www.baidu.com HTTP/1.1
Host: www.baidu.com
Connection: keep-alive
Content-Length: 7
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
wd=HTTP
-
响应
HTTP/1.1 200 OK
Connection: Keep-Alive
Content-Encoding: gzip
Content-Type: text/html;charset=utf-8
Date: Thu, 14 Feb 2019 07:23:49 GMT
Transfer-Encoding: chunked
<html>...</html>
1.2 HTTP 中间人攻击
不安全
。
-
小明在 JAVA 贴吧发帖,内容为 我爱JAVA
:
-
被中间人进行攻击,内容修改成 我爱PHP
-
小明被群嘲(手动狗头)
1.3 防止中间人攻击
对称加密
的方式将报文加密这样中间人不就看不到明文了吗,因而以下改造:
-
双方约定加密方式
-
使用 AES 加密报文

非对称加密
,咱们能够经过 RSA 算法来实现。
公私钥
,服务器将
公钥
返回给客户端,客户端本地生成一串秘钥(
AES_KEY
)用于
对称加密
,并经过服务器发送的
公钥
进行加密获得(
AES_KEY_SECRET
),以后返回给服务端,服务端经过
私钥
将客户端发送的
AES_KEY_SECRET
进行解密获得
AEK_KEY
,最后客户端和服务器经过
AEK_KEY
进行报文的加密通信,改造以下:

AES加密
的秘钥,因此对于后续的通信是确定没法进行解密了,那么这样作就是绝对安全了吗?
AES_KEY
,那我就把本身模拟成一个客户端和服务器端的结合体,在
用户->中间人
的过程当中中间人模拟服务器的行为,这样能够拿到用户请求的明文,在
中间人->服务器
的过程当中中间人模拟客户端行为,这样能够拿到服务器响应的明文,以此来进行中间人攻击:

AES_KEY
,在拿到
AES_KEY
以后就能轻松的进行解密了。
2. HTTPS 协议
2.1 HTTPS 简介
SSL+HTTP
的简称,固然如今
SSL
基本已经被
TLS
取代了,不过接下来咱们仍是统一以
SSL
做为简称,
SSL
协议其实不止是应用在
HTTP
协议上,还在应用在各类应用层协议上,例如:
FTP
、
WebSocket
。
SSL
协议大体就和上一节
非对称加密
的性质同样,握手的过程当中主要也是为了交换秘钥,而后再通信过程当中使用
对称加密
进行通信,大概流程以下:

公钥
,客户端会对 SSL 证书进行验证,其中证书认证体系就是确保
SSL
安全的关键,接下来咱们就来说解下
CA 认证体系
,看看它是如何防止中间人攻击的。
2.2 CA 认证体系
-
权威认证机构前端
在 CA 认证体系中,全部的证书都是由权威机构来颁发,而权威机构的 CA 证书都是已经在操做系统中内置的,咱们把这些证书称之为
CA根证书
:web -
签发证书面试
咱们的应用服务器若是想要使用 SSL 的话,须要经过权威认证机构来签发
CA证书
,咱们将服务器生成的公钥和站点相关信息发送给CA签发机构
,再由CA签发机构
经过服务器发送的相关信息用CA签发机构
进行加签,由此获得咱们应用服务器的证书,证书会对应的生成证书内容的签名
,并将该签名
使用CA签发机构
的私钥进行加密获得证书指纹
,而且与上级证书生成关系链。算法这里咱们把百度的证书下载下来看看:浏览器

GlobalSign G2
,一样的
GlobalSign G2
是受信于
GlobalSign R1
,当客户端(浏览器)作证书校验时,会一级一级的向上作检查,直到最后的
根证书
,若是没有问题说明
服务器证书
是能够被信任的。
-
如何验证服务器证书安全
那么客户端(浏览器)又是如何对
服务器证书
作校验的呢,首先会经过层级关系找到上级证书,经过上级证书里的公钥
来对服务器的证书指纹
进行解密获得签名(sign1)
,再经过签名算法算出服务器证书的签名(sign2)
,经过对比sign1
和sign2
,若是相等就说明证书是没有被篡改
也不是伪造
的。服务器

AES_KEY
从而发起拦截和修改 HTTP 通信的报文。
总结
最后

本文分享自微信公众号 - 前端瓶子君(pinzi_com)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。微信