【计算机网络14】应用层之HTTPS

HTTPS(HyperText Transfer Protocol Secure),译为:超文本传输安全协议,常称为 HTTP over TLS、HTTP over SSL、HTTP Secure,由网景公司于1994年首次提出。

HTTPS的默认端口号是443(HTTP是80)

现在在浏览器上输入 http://www.baidu.com 会自动重定向到 https://www.baidu.com

1.SSL/TLS

HTTPS 是在 HTTP 的基础上使用 SSL/TLS 来加密报文,对窃听和中间人攻击提供合理的防护。

在这里插入图片描述

SSL/TLS 也可以用在其他协议上,比如 FTP --> FTPS,SMTP --> SMTPS。

TLS(Transport Layer Security),译为:传输层安全性协议,前身是 SSL(Secure Sockets Layer),译为:安全套接层。

历史版本信息:

  • SSL 1.0:因存在严重的安全漏洞,从未公开过
  • SSL 2.0:1995年,已于2011年弃用(RFC 6176)
  • SSL 3.0:1996年,已于2015年弃用(RFC7568)
  • TLS 1.0:1999年(RFC 2246)
  • TLS 1.1:2006年(RFC 4346)
  • TLS 1.2:2008年(RFC 5246)
  • TLS 1.3:2018年(RFC 8446)

在这里插入图片描述

2.OpenSSL

OpenSSL 是 SSL/TLS 协议的开源实现,始于1998年,支持Windows、Mac、Linux等平台。

Linux、Mac一般自带OpenSSL。

Windows下载安装OpenSSL:https://slproweb.com/products/Win32OpenSSL.html

常用命令

  • 生成私钥:openssl genrsa -out mj.key
  • 生成公钥:openssl rsa -in mj.key -pubout -out mj.pem

可以使用 OpenSSL 构建一套属于自己的CA,自己给自己颁发证书,称为“自签名证书”。

3.HTTPS

3.1 HTTPS的成本

证书的费用

加解密计算

降低了访问速度

有些企业的做法是:包含敏感数据的请求才使用 HTTPS,其他保持使用 HTTP。

3.2 HTTPS的通信过程

总的可以分为 3 大阶段:

  • TCP的3次握手
  • TLS的连接
  • HTTP请求和响应

在这里插入图片描述

3.3 TLS 1.2 的连接

大概是有 10 大步骤,下图中省略了中间产生的一些ACK确认。

在这里插入图片描述

(1) Client Hello

TLS的版本号

支持的加密组件(Cipher Suite)列表。加密组件是指所使用的加密算法及密钥长度等。

一个随机数(Client Random)

在这里插入图片描述

(2) Server Hello

TLS的版本号

选择的加密组件,是从接收到的客户端加密组件列表中挑选出来的。

一个随机数(Server Random)

在这里插入图片描述

(3) Certificate

服务器的公钥证书(被 CA 签名过的)

在这里插入图片描述

(4) Server Key Exchange

用以实现 ECDHE 算法的其中一个参数(Server Params)。ECDHE 是一种密钥交换算法。

为了防止伪造,Server Params 经过了服务器私钥签名。

在这里插入图片描述

(5) Server Hello Done

告知客户端:协商部分结束。

在这里插入图片描述

目前为止,客户端和服务器之间通过明文共享了 Client Random、Server Random、Server Params,而且,客户端也已经拿到了服务器的公钥证书,接下来,客户端会验证证书的真实有效性。

(6) Client Key Exchange

用以实现 ECDHE 算法的另一个参数(Client Params)

在这里插入图片描述

目前为止,客户端和服务器都拥有了 ECDHE 算法需要的 2 个参数:Server Params、Client Params。

客户端、服务器都可以使用 ECDHE 算法根据 Server Params、Client Params 计算出一个新的随机密钥串 Pre-master secret,然后结合 Client Random、Server Random、Pre-master secret 生成一个主密钥,最后利用主密钥衍生出其他密钥:客户端发送用的会话密钥、服务器发送用的会话密钥等。

(7) Change Cipher Spec

告知服务器:之后的通信会采用计算出来的会话密钥进行加密。

在这里插入图片描述

(8) Finished

包含连接至今全部报文的整体校验值(摘要),加密之后发送给服务器。这次握手协商是否成功,要以服务器是否能够正确解密该报文作为判定标准。

在这里插入图片描述

(9) Change Cipher Spec

在这里插入图片描述

(10) Finished

在这里插入图片描述

到此为止,客户端服务器都验证加密解密没问题,握手正式结束,后面开始传输加密的 HTTP 请求和响应。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值