浅谈一下http与https的区别?https是如何工作的?

为什么会出现https?

HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。

简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

HTTPS和HTTP的区别主要如下:

  • https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
  • http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
  • http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  • http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
  • http是超文本传输协议,而https可以简单的理解为安全的http协议。https通过在http协议下添加了一层ssl协议对数据进行加密从而保证了安全。https的作用主要有两点:建立安全的信息传输通道保证数据传输安全;确定网站的真实性。

https的工作流程

提到HTTPS的话首先要说到加密算法,加密算法分为两类:对称加密和非对称加密

对称加密:加密和解密用的都是相同的秘钥,优点是速度快,缺点是安全性低。常见的对称加密算法有:DES、AES等等。

非对称加密:非对称加密有一个秘钥对,分为公钥和私钥。一般来说,私钥自己持有,公钥可以公开给对方,优点是安全性比对称加密高,缺点是数据传输效率比对称加密低。采用公钥加密的信息只有对称的私钥可以解密。常见的非对称加密包括RSA等。

在正式场景中一般都是对称加密和非对称加密结合使用,使用非对称加密完成秘钥的传递,然后使用对称秘钥进行数据加密和解密。二者结合既保证了安全性,又提高了数据传输效率。

HTTPS的具体流程如下:

  1. 客户端(通常是浏览器)先向服务器发出加密通信的请求
    • 支持的协议版本
    • 一个客户端生成的随机数random1,稍后用于生成“对话秘钥”
    • 确认使用的加密方式,比如RSA公钥加密
    • 服务器证书
  2. 服务器收到请求,然后响应
    • 确认使用的加密通信版本,如果浏览器与服务器支持的版本不一致,服务器关闭加密通信
    • 一个服务器生成的随机数random2,稍后用于生成“对话秘钥”
    • 默认使用的公钥加密算法,比如RSA公钥加密
    • 服务器证书
  3. 客户端收到证书之后
    • 首先验证证书的安全性
    • 验证通过之后,会生成一个pre-master secret,然后使用证书中的公钥进行加密,然后传递给服务器端
  4. 服务器端收到使用公钥加密的内容
    • 在服务器端使用私钥解密之后获得随机数pre-master secret,
    • 然后根据random1、random2、pre-mastersecret通过一定的算法得出一个对称加密的秘钥。作为后面交互过程中的对称秘钥。
    • 同时客户端也会使用random1、random2、pre-master secret,和同样的算法生成对称秘钥
  5. 然后在后续的交互中就使用上一步生成的对称秘钥对传输的内容进行加密和解密。

你可能感兴趣的:(网络协议)