HTTPS的介绍

来源:互联网 发布:无线网卡安装后无网络 编辑:程序博客网 时间:2024/06/03 04:26

一.HTTPS的基础介绍

HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)是一个安全的通信通道,基于HTTP,使用安全套接字层(TLS/SSL)进行信息交换

1.HTTP和HTTPS的区别

a.HTTPS在TCP传输层上多了一层SSL安全层,HTTPS是加密传输协议,HTTP是明文传输协议b.HTTPS需要用到SSL证书c.HTTPS标准端口号是443,HTTP标准端口号是80

image

2.HTTPS的数据传输流程

在HTTPS中,客户端首先打开一条到服务器端口443的连接,一旦建立了TCP连接,客户端和服务器就会初始化SSL层,对加密参数进行沟通,并交换密钥,握手完成的同时SSL的初始化也会完成,客户端将请求报文发送给安全层,在发送给TCP之前对报文进行加密处理

image

2.相比HTTP,HTTPS的优点

1).数据加密,传输内容进行混淆2).身份验证,通信双方验证对方的身份真实性3).数据完整性保护,检测传输内容是否被篡改或伪造

二.安全层的相关知识

1.对称加密和非对称加密技术

1).对称加密算法 加密和解密使用相同的密钥,优点是加密速度快,常见的算法如(DES,AES等)2).非对称加密算法(公开密钥加密),有两个密钥(公钥和私钥),可以用来作为数字签名,常见的密钥交换算法(RSA,ECDHE,DH,DHE)

2.摘要算法

 数字摘要是采用单项Hash函数将需要加密的明文"摘要成一串固定长度(128位)的密文"

2.数字证书CA

1).数字证书   数字证书就是身份认证机构完成的,证书由公钥、证书主体、数字签名等内容组成。   在客户端发起SSL请求后,服务器会将数字证书发给客户端,客户端会对证书进行校验2).数字证书的作用  a.身份授权,确保浏览器访问的网站是经过CA验证的可信任的网站  b.分发公钥,每一个数字证书都包含了注册者生成的公钥,在SSL握手的时会通过消息传输给客户端3).数字证书验证  a.客户端拿到服务器的公钥后,使用内置在客户端的CA证书的公钥对证书的摘要进行解密得到摘要A,  再根据签名的Hash算法计算得出证书的摘要B,进行比对

三.HTTPS的安全通信机制

下面是HTTPS安全通讯过程:

image

1.客户端发起HTTPS请求

1).客户端通过发送请求报文开始SSL通信,报文中包含客户端支持的SSL指定的版本、加密组件列表(所使用的加密算法以及密钥长度)2).随机数random_c,用于后续对称密钥的生成

2.服务器的配置

1).服务器在接收到客户端的请求之后,服务器需要确定加密协议的版本,以及加密算法
2).生成随机数random_S用于后续对称密钥的生成

3.传送证书

服务器发送给客户端公钥证书

4.客户端解析证书

由客户端的TLS/SSL完成1).验证服务器返回的证书的有效性2).客户端client_key_exchange作为回应,客户端使用一些加密算法,产生一个48个字节的key,用服务器返回的证书链中携带的公钥加密该随机数,发送给服务器3).此时客户端已经拥有协商对称加密的信息:两个明文随机数 random_C 和random_S 与自己计算产生的Pre-master  通过一定规则计算得到协商的对称加密密钥(如enc_key = Fuc(random_C, random_S, Pre-Master))4).客户端发送Change Cipher Spec报文告知服务器后续的通讯都   采用协商的对称加密密钥和加密   算法进行加密通讯

5.传送加密信息(传送的是用证书加密后的随机数)

6.服务器解密信息

 1).服务器用私钥解密得到第三个随机数Pre-master,基于之前交换的明文随机数random_C、 random_S,   计算得到协商对称密钥enc_key = Fuc(random_C, random_S, Pre-Master)2).计算之前所有接收信息的hash值H1,然后用计算得到的对称加密密钥解密客户端发送的信息,   得到数据H2,H1和H2进行比较验证协商对称加密密钥和协商算法的正确性3).验证通过,服务器发送change_cipher_spec以告知客户端后续的通信都采用协商的密钥与算法尽心加密通信

7.传输加密后的信息

8.客户端解密信息

四.Charles的HTTPS抓包的原理

Charles本身是一个协议代理工具,如果只是普通的HTTP请求,因为数据本身没经过加密,因此代理可以知道客户端与服务器通信的内容。

1.Charles具体抓包流程

image

1.在进行抓包建立之前,需要安装Charles Root根证书,客户端提前安装信任Charles自己的证书中心,并对响应的域名开启HTTPS enable选项,2.客户端向服务器发起HTTPS请求3.Charles拦截客户端的请求,伪装成客户端向服务器进行请求4.服务器向“客户端”(实际上是Charles)返回服务器的CA的证书5.Charles拦截服务器的响应,获取服务器证书公钥,然后自己动态制作一张证书,  将服务器证书替换后发送给客户端(Charles拿到了服务器证书的公钥)6.客户端接收到“服务器”(实际上是Charles)的证书后,生成一个对称密钥,用Charles的公钥加密,发送给“服务器”(Charles)7.Charles拦截客户端的响应,用自己的私钥解密对称密钥,然后用服务器证书公钥极爱,发送给服务器(Charles拿到了对称密钥)8.服务器用自己的私钥解密对称密钥,向客户端(Charles)发送响应9.Charles拦截服务器的响应,替换成自己的证书发送给客户端10.连接建立,Charles拿到服务证书的公钥和客户端与服务器协商的对称密钥,之后就可以解密或者修改加密的报文了根证书和动态签发证书:证书的信任链体系,这是一个树状的结构,全球有为数不多的根证书颁颁发机构,授权二级证书颁发机构进行证书颁发,而只要用户信任了根证书,就会对其下属二级证书机构颁发的所有证书都予以信任。