关于HTTPS

转载请注明出处
作者:@ZJXin
由于本人水平有限,如有不正确的地方欢迎留言指出,谢谢!

一、HTTPS基础知识

基础知识

什么是HTTPS

HTTPS(Hypertext Transfer Protocol Security),安全超文本传输协议,在http后面加上的s代表 security,表示现在使用的是提供安全服务的HTTP协议。它使用安全套接字层(SSL)进行信息交换,简单来说,它是HTTP的安全版,是使用SSL/TLS加密的HTTP协议。

HTTP协议采用明文传输信息,存在信息窃听、信息篡改和信息劫持的风险,而协议TLS/SSL具有身份验证、信息加密和完整性校验的功能,可以避免此类问题发生。

HTTPS是在HTTP上建立SSL加密层,并对传输数据进行加密,是HTTP协议的安全版。HTTPS协议的主要作用是:

  1. 对数据进行加密,并建立一个信息安全通道,来保证传输过程中的网络安全
  2. 对网站服务器进行真实身份认证

HTTPS和HTTP的区别

  1. HTTPS是加密传输协议,HTTP是明文传输协议
  2. HTTPS需要用到SSL证书,而HTTP不用
  3. HTTPS标准443,HTTP标准端口80
  4. HTTPS基于传输层,HTTP基于应用层

HTTPS的大致过程

  1. 建立服务器443端口连接
  2. SSL握手:随机数,证书,密钥,加密算法
  3. 发送加密请求
  4. 发送加密响应
  5. 关闭SSL
  6. 关闭TCP

二、TLS/SSL工作原理

安全套接字层 SSL(Secure Socket Layer)
运输层安全 TLS(Transport Layer Security)

SSL作用在端系统应用层的HTTP和运输层之间,在TCP之上建立起一个安全通道,为通过TCP传输的应用层数据提供安全保障。

IETE在SSL3.0的基础上设计了TLS协议,为所有基于TCP的网路应用提供安全数据传输服务。

TLS/SSL的功能实现主要依赖于三类基本算法: 散列函数对称加密非对称加密,其利用非对称加密实现身份认证和密钥协商,对称加密算法采用协商的密钥对数据加密,基于散列函数验证信息的完整性。

SSL提供的安全服务可以归纳为以下三类:

  1. SSL服务器鉴别,允许用户证实服务器的身份。支持SSL的客户端通过验证来自服务器的证书,来鉴别服务器的真实身份并获得服务器的公钥。
  2. SSL客户鉴别,SSL的可选安全服务,允许服务器证实客户的身份
  3. 加密的SSL会话,对客户和服务器间发送的所有报文进行加密,并检测报文是否被篡改

TLS的基本工作方式是,客户端使用非对称加密与服务器进行通信,实现身份验证并协商对称加密使用的密钥,然后对称加密算法采用协商密钥对信息以及信息摘要进行加密通信,不同的节点之间采用的对称密钥不同,从而可以保证信息只能通信双方获取。

二、SSL握手

SSL握手的大致过程

  1. 客服端发送随机数①,以及支持的加密算法(如RSA公钥加密算法)
  2. 服务端发送随机数②,以及服务器公钥,并确认加密方法
  3. 客户端发送用服务器公钥加密的随机数③
  4. 服务器用私钥解密这个随机数③,用加密方法计算生成对称加密的密钥给客户端
  5. 接下来的报文都用双方协定好的加密方法和密钥,进行加密通信

SSL握手的详细过程

(一) 客户端发出加密通信请求client_hello

提供:

  1. 协议版本(如TSL1.0)
  2. 随机数①(用于生成对话密钥)
  3. 支持的加密方法(如RSA加密)
  4. 支持的压缩方法

(二) 服务器回应server_hello

回应内容:

  1. 确认使用的加密通信协议版本
  2. 随机数②(用于生成对话密钥)
  3. 确认加密算法(RSA)
  4. 服务器证书(包含非对称加密的公钥)
  5. (可选)要求客户端提供证书请求

(三) 客户端验证证书

如果证书不是可信即构颁布,或证书域名与实际域名不符,或者证书已经过期,就会向访问者显示一个警告,是否继续通信

(四) 客户端回应

证书没问题,就会取出证书中的服务器公钥
然后发送:

  1. 随机数③(pre-master key,此随机数用服务器公钥加密,防止被窃听)
  2. 编码改变通知(表示随后的信息都将用双方商定的方法和密钥发送)
  3. 客户端握手结束通知

(五) 双方生成会话密钥

双方同时有了三个随机数,接着用事先商定的加密算法,各自生成同一把会话密钥

服务端用自己的非对称加密私钥解密随机数③,会计算生成本次所用的会话密钥(对称加密的密钥)

(六) 服务器最后响应

服务器生成会话密钥后,向客户端发送:

  1. 编码改变通知
  2. 服务器握手结束

至此,握手阶段全部结束,接下来客户端与服务器进入加密通信,用会话密钥加密内容

SSL握手过程

你可能感兴趣的:(关于HTTPS)