HTTPS协议

简介

HTTPS网络分层

SSL是一个介于HTTP协议与TCP之间的一个可选层,HTTPS协议通过SSL or TLS层来进行服务请求与数据交互
在这里插入图片描述

通信端口

协议端口
http默认80
https默认443

SSL是一个二进制协议,与HTTP完全不同,其流量入口承载在默认的443端口,如果SSL和HTTP流量都从端口80进入,如果共用端口需要进行额外配置,基于TCP链接通过代理判断数据流报文头进行协议请求的转发与处理
在这里插入图片描述

通信方式

SSL/TLS协议区别

TLS的主要目标是使SSL更安全,并使协议的规范更精确和完善

  • SSL:(Secure Socket Layer,安全套接字层),为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取。当前版本为3.0。它已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输。
    SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
  • TLS:(Transport Layer Security,传输层安全协议),用于两个应用程序之间提供保密性和数据完整性。
    TLS 1.0是IETF(Internet Engineering Task Force,Internet工程任务组)制定的一种新的协议,它建立在SSL 3.0协议规范之上,是SSL 3.0的后续版本,可以理解为SSL 3.1,它是写入了 RFC 的。该协议由两层组成: TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)。较低的层为 TLS 记录协议,位于某个可靠的传输协议(例如 TCP)上面。

SSL/TLS协议作用

  • 认证用户和服务器,确保数据发送到正确的客户机和服务器
  • 加密数据以防止数据中途被窃取
  • 维护数据的完整性,确保数据在传输过程中不被改变

SSL握手

SSL协议分为两部分:Handshake Protocol、Record Protocol

协议内容
Handshake Protocol用来协商通信密钥
Record Protocol定义数据传输的格式

Handshake Protocol(密钥协商)

在这里插入图片描述

客户端发出请求(ClientHello)

客户端主要向服务器提供以下信息:

  • 支持的协议版本,比如TLS 1.0版
  • 一个客户端生成的随机数,稍后用于生成"对话密钥"
  • 支持的加密方法,比如RSA公钥加密
  • 支持的压缩方法
服务器回应(ServerHello)

服务器的回应包含以下内容:

  • 确认使用的加密通信协议版本,比如TLS 1.0版本。如果浏览器与服务器支持的版本不一致,服务器关闭加密通信
  • 一个服务器生成的随机数,稍后用于生成"对话密钥"
  • 确认使用的加密方法,比如RSA公钥加密
  • 服务器证书

证书是需要申请,并由专门的数字证书认证机构(CA) 通过非常严格的审核之后颁发的电子证书。颁发证书的同时会产生一个私钥公钥。私钥由服务端自己保存,不可泄漏。公钥则是附带在证书的信息中,可以公开的。证书本身也附带一个证书电子签名,这个签名用来验证证书的完整性和真实性,可以防止证书被串改。另外,证书还有个有效期。
在这里插入图片描述

客户端回应(Certificate Verify)

客户端向服务器发送下面三项信息:

  • 一个随机数。该随机数用服务器公钥加密,防止被窃听
  • 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送
  • 客户端握手结束通知,表示客户端的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供服务器校验
服务器最后回应(Server Finish)
  • 交换协议版本号
  • 选择一个两端都了解的密码
  • 对两端的身份进行认证
  • 生成临时的会话秘钥,以便加密信道

简易通俗版本SSL握手交互过程
在这里插入图片描述

Record Protocol(格式定义)

SSL安全性

在这里插入图片描述
通过分析SSL建立握手的过程,SSL的结构是严谨的,正确使用加密算法以及证书核验是不会出现安全问题的,如果没有合理使用SSL协议的话,则会有可能出现问题,常见的攻击就是中间人攻击(middle in the middle),它是指在A和B通信的同时,有第三方C处于信道的中间,可以完全听到A与B通信的消息,并可拦截,替换和添加这些消息。

出现SSL安全隐患的原因如下:

  • 不进行证书核身。SSL可以允许多种密钥交换算法,而有些算法,如DH,没有证书的概念,这样A便无法验证B的公钥和身份的真实性,从而C可以轻易的冒充,用自己的密钥与双方通信,从而窃听到别人谈话的内容
    而为了防止middle in the middle攻击,应该采用有证书的密钥交换算法。
  • 忽略安全提醒。有了证书以后,如果C用自己的证书替换掉原有的证书之后,A的浏览器会弹出一个警告框进行警告,但又有多少人会注意这个警告呢
  • 加密强度弱。由于美国密码出口的限制,IE,netscape等浏览器所支持的加密强度是很弱的,如果只采用浏览器自带的加密功能的话,理论上存在被破解可能
  • 代理。像路由器、连接热点等都需要类似证书核验的支持,否则也会成为中间攻击的场所

参考

《HTTP权威指南》
SSL/TLS协商过程详解
实现http和https共用一个端口原理及实现

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大摩羯先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值