计算机网络学习之 Https 相关

栏目: 编程工具 · 发布时间: 5年前

内容简介:上一篇写了关于 HTTP 相关的知识,还没看的最好先去看下其实 HTTPS 协议只是在 HTTP 的应用层中,多加了个 SSL/TLS 协议,对比图如下:也就是说 HTTPS = HTTP + SSL/TLS

上一篇写了关于 HTTP 相关的知识,还没看的最好先去看下 计算机网络学习之 http 相关

其实 HTTPS 协议只是在 HTTP 的应用层中,多加了个 SSL/TLS 协议,对比图如下:

计算机网络学习之 Https 相关

也就是说 HTTPS = HTTP + SSL/TLS

这里先有个大致的了解就行,接下来具体看下 HTTPS:

二、HTTPS 简介

为什么要使用 HTTPS?

HTTP 协议是不加密的,数据在传输中是明文的,存在被消息被篡改、被监听、被伪造的可能,也就造成了潜在的安全隐患。

为了保证互联网数据传输中的安全性,所以在 HTTP 协议中加入了一层 SSL/TLS 协议,就是现在我们说的 HTTPS ,HTTPS 能够使数据在传输的过程中是加密的,保证数据安全。

HTTP 和 HTTPS 的区别

  1. HTTP 数据明文传输,HTTPS 数据加密传输
  2. HTTP 不需要证书,HTTPS 需要申请 CA 证书
  3. HTTP 默认80端口,HTTPS 默认 443 端口
  4. HTTPS 比 HTTP 安全,因为比 HTTP 多了 SSL 层

SSL/TLS

SSL协议(Secure Sockets Layer)翻译就是 安全套接字层,TLS(Transport Layer Security )是在 SSL 演变过程中的生成的,也就是 TLS 是 SSL 的新版本。

客户端和服务端在交互的过程中,都要通过 TLS 层进行加密和解密,从而保证了数据的安全传输和完整传输。

SSL/TLS 也会进行握手操作,成为 SSL 握手。SSl 握手是在 HTTP 三次握手以后进行的,所以 SSl 握手过程是不安全的,所以在这种情况下就需要借助数字证书来保证 SSL 握手的正确性,但是要注意的是,SSL/TLS 协议不仅仅适用于 HTTP协议,是可以用于任何应用层的协议的。

数字证书简称为 CA,是由权威机构发布的,也就是讲数字证书是可以被我们所信赖的,如果要使用 HTTPS 的话,就需要去证书机构申请证书,大致流程如下:

  1. 公司向证书机构 CA 申请证书,并把自己服务器的公钥交给证书机构
  2. CA 根据公司提供的信息,会决定要不要给其颁发证书,如果确认颁发证书,就把公司的公钥放入证书之中,并且用自己的私钥进行加密,交给服务器。
  3. 然后客户端在完成三次握手以后会和服务器进行 SSL 握手,拿到服务器返回的证书进行校验,通过后才可以进行加密传输。

三、HTTPS 握手过程

计算机网络学习之 Https 相关

1.Client Hello

计算机网络学习之 Https 相关
计算机网络学习之 Https 相关

第一次客户端通过 Client Hello 消息把随机数(称为 Random1)、Session ID 支持的加密算法发送给服务器

2.Server Hello

计算机网络学习之 Https 相关

服务器确定好定本次通信采用的SSL版本和加密算法,如果服务器允许客户端在以后的通信中重用本次会话,则服务器会为本次会话分配会话ID,生成服务器的随机数 (称为 Random2)最终都通过 Server Hello 发送给客户端

3.Certificate, Certificate Status, Server Key Exchange, Server Hello Done

计算机网络学习之 Https 相关

这步的主要作用就是吧把证书等信息发送给客户端。

4.Client Key Exchange, Change Cipher Spec, Encrypted Handshake Message

计算机网络学习之 Https 相关

Client Key Exchange 是在校验通过以后,客户端又生成一个随机数(Random 3),利用证书中的公钥对其进行加密,告诉服务端。

这个时候客户端已经有Random1、Random2、Random3三个随机数。

Change Cipher Spec 客户端发送消息,通知服务器后续报文将采用协商好的密钥和加密套件进行通信 。

Encrypted Handshake Message 客户端计算已交互的握手消息(除Change Cipher Spec消息外所有已交互的消息)的 Hash 值,利用协商好的密钥和加密算法处理 Hash 值(计算并添加MAC值、加密等),并通过 Encrypted Handshake Message 消息发送给 服务器。服务器利用同样的方法计算已交互的握手消息的Hash值,并与 Encrypted Handshake Message 消息的解密结果比较,如果二者相同,且MAC值验证成功,则证明密钥和加密套件协商成功。

5.Change Cipher Spec, Encrypted Handshake Message

计算机网络学习之 Https 相关

服务器通过自己的私钥对客户端传来的数据进行解密,得到 Random3。

这样服务端也有Random1、Random2、Random3三个随机数。这个时候客户端和服务端都有Random1、Random2、Random3三个随机数,然后服务器发送Change Cipher Spec消息,通知客户端后续报文将采用协商好的密钥和加密套件进行通信。

Encrypted Handshake Message 服务器计算已交互的握手消息的Hash值,利用协商好的密钥和加密套件处理Hash值(计算并添加MAC值、加密等),并通过 Encrypted Handshake Message 消息发送给客户端。客户端利用同样的方法计算已交互的握手消息的Hash值,并与Encrypted Handshake Message消息的解密结果比较,如果二者相同,且MAC值验证成功,则证明密钥和加密套件协商成功。

通过上面的步骤,客户端和服务端都使用 Random1、Random2、Random3三个随机数 根据商定好的规则,生成对称秘钥(master secret),各自保存在本地,用该秘钥加密接下来的数据。

6.正常通信

计算机网络学习之 Https 相关

前面完成了 SSL 握手操作,这里就可以利用刚才协商好的秘钥进行数据的加密传输。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

编程珠玑(英文版・第2版)

编程珠玑(英文版・第2版)

[美] Jon Bentley / 人民邮电出版社 / 2010-8 / 39.00元

多年以来,当程序员们推选出最心爱的计算机图书时,《编程珠玑》总是位列前列。正如自然界里珍珠出自细沙对牡蛎的磨砺,计算机科学大师Jon Bentley以其独有的洞察力和创造力,从磨砺程序员的实际问题中凝结出一篇篇不朽的编程“珠玑”。这些文章是《ACM通讯》最受欢迎的专栏文章,最终结集为两部书出版。本书为第一卷,主要讨论计算机科学中最本质的问题:如何正确选择和高效地实现算法。 在书中,作者选取许......一起来看看 《编程珠玑(英文版・第2版)》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具