浅谈HTTPS加密

了解web网络基础,什么是http

HTTP( HyperText Transfer Protocol,超文本传输协议 )的协议作为规范,完成从客户端到服务器端等一系列运作流程。而协议是指规则的约定。
Web 是建立在 HTTP 协议上通信的

HTTP工作原理

浅谈HTTPS加密_第1张图片
HTTP工作原理.png

HTTP有哪些问题

1、窃听风险 : 内容明文传递,任何中间人都可以去获取你的信息(路由器)
2、中间风险 : 不验证通信方身份,因此有可能遭遇伪装(转账)
3、篡改风险 : 无法验证报文的完整性,所有有可能已篡改(运营商)

SSL协议

SSL位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。
SSL协议有三个特性:机密性、可靠性、完整性。 就是SSL协议使用密钥加密通信数据。服务器和客户都会被认证,客户的认证是可选的。
SSL协议会对传送的数据进行完整性检查。有这三个特性来保证数据通讯的安全支持。
SSL协议可分为两层:

  • SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。
  • SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等

HTTPS和HTTP的区别

这个S是SSL(全称: Secure Sockets Layer)其实就是在传统http协议上加了一层壳,在http启动前对齐进行了加密解密
HTTP是无状态、无连接的通常端口为80。
HTTPS是由SSL+HTTP协议构建的的加密传输、身份认证的网络协议,通常端口为443
HTTP 工作于应用层,而 HTTPS 工作在传输层

如何解决信息安全问题

对称加密算法

1、客户端和服务端用相同的算法发送数据

浅谈HTTPS加密_第2张图片

缺点:使用统一加密算法,别的页面可以用相同的加密算法反推获取

2、服务端针对不同的客户端使用不同的加密算法


浅谈HTTPS加密_第3张图片

缺点:客户端获取自身应该使用何种算法时需要和服务器进行协商,此时数据还是暴露的

非对称加密算法

1、服务段通过私钥解密,客户端通过公钥获取自身需要的内容

浅谈HTTPS加密_第4张图片

缺点:确认加密方式时仍然可以知悉,通过随机数来确定每一次交互使用何种算法

2、中间人角色

浅谈HTTPS加密_第5张图片
不能直接将公钥传送给客户端

数字证书

数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。具有一点时效性,一般由各地的CA机构颁发

浅谈HTTPS加密_第6张图片
浅谈HTTPS加密_第7张图片

1、证书中有服务器的公钥,而且这个公钥被第三方机构的私钥加密了。如果能解密,就说明这个公钥没有被中间人调包。

SSL证书的安全问题

1、SSL证书欺骗 ( SSL劫持 )
2、个人未受认证的CA机构也会提示( 12306 )

HTTPS握手流程

  • 客户端发送 client_hello,包含一个随机数 random1。

  • 服务端回复 server_hello,包含一个随机数 random2,携带了证书公钥 P。

  • 客户端接收到 random2 之后就能够生成 premaster_secrect (对称加密的密钥)以及 master_secrect(用premaster_secret加密后的数据)。

  • 客户端使用证书公钥 P 将 premaster_secrect 加密后发送给服务器 (用公钥P对premaster_secret加密)。

  • 服务端使用私钥解密得到 premaster_secrect。又由于服务端之前就收到了随机数 1,所以服务端根据相同的生成算法,在相同的输入参数下,求出了相同的 master secrect。

HTTPS流程图

浅谈HTTPS加密_第8张图片

SSL证书申请

SSL证书可以向CA机构通过付费的方式申请,也可以自己制作。

在申请SSL证书时需要向CA机构提供网站域名,营业执照,以及申请人的身份信息等。

HTTPS的优缺点

优点:

1、HTTP2协议只支持HTTPS加密连接,H2是建立在HTTPS的SSL层上
2、iOS和安卓都要求使用HTTPS加密
3、利于SEO优化

缺点:

1、使用cdn时候需要相关节点支持
2、相关静态资源需要配置https
3、多次握手增加耗时大概60ms

为什么Charles和fiddler可以获取到https请求内容

1、Charles和Fiddler的本质都是通过安装根证书实现的

  • 首先 Charles 本身通过中间人角色,冒充客户端接受服务器证书
  • charles自签发证书在客户端本地进行安装,并归类到受信任证书列表
  • 此后Charles伪装服务端截获客户端请求,通过私钥解密得到客户端数据
  • 再通过之前冒充客户端得到的服务器证书

你可能感兴趣的:(浅谈HTTPS加密)