内容目录

https基本概述

为何需要https

因为http采用的是明文传输数据,那么在传输(账户密码、交易信息等敏感数据)时不安全。容易遭到篡改,如果使用https协议,数据在传输过程中是加密的,能够有效避免网站传输时信息泄露

什么是https

  • https安全的超文本传输协议,我们现在大部分站点都是通过https来实现站点数据安全
  • 早期网景公司设计了SSL(Secure Socket Layer)安全套接层协议,主要对http协议传输的数据进行加密。如果将站点变成安全的https站点呢?我们需要了解SSL(Secure Socket Layer)协议
  • 而现在很多时候我们使用的是TLS(Transport Layer Security)传输层安全协议来实现的加密与解密

TLS如何实现加密

  • TLS/SSL是如何实现http明文消息被加密的,TLS/SSL工作在OSI七层模型中,应用层与传输层之间
    • 1.提供数据安全:保证数据不会被泄露
    • 2.提供数据的完整性:保证数据在传输过程中不会吧篡改
    • 3.对应用层交给传输层的数据进行加密与解密

https实现原理

加密模型-对称加密

  • 对称加密:两个想通讯的人持有相同的密钥,进行加密与解密
  • bob将原始文档通过密钥加密生成一个密文文档
  • alice拿到这个密文文档以后,它可以用这把密钥还原为原始的明文文档

file

  • 对称加密究竟是如何实现的,我们可以以RC4这样一个对称加密序列算法来看一下
  • 加密:密钥序列+明文=密文
  • 解密:密钥序列+密文=明文

file

加密模型-非对称加密

  • 非对称加密:它根据一个数学原理,创建一对密钥(公钥和私钥)公钥加密,私钥解密
  • 私钥:私钥自己使用,不对外开放
  • 公钥:公钥给大家使用,对外开放
  • 比如:alice有一对公钥和私钥,他可以将公钥发布给任何人。假设bob是其中一个,当bob要传递一份加密文档给alice,那么bob就可以用alice的公钥进行加密,alice收到密文文档后通过自己的私钥进行解密,获取原始文档

file

注意:alice必须知道bob就是bob,也就是它收到的信息必须是bob发来的,那么这个信任问题,在多方通讯的过程中,必须有一个公信机构来验证双方的身份,那么这个机构就是CA机构

身份验证机构-CA

通讯双方是如何验证双方的身份?
CA机构是可信任组织机构,主要用来颁发证书及验证证书。那CA机构又是如何申请和颁发证书的呢?

file

我们首先需要申请证书,需要进行登记,登记我是谁,我是什么组织,我想做什么,到了登记机构在通过CSR发给CACA中心通过后,CA中心会生成一对公钥和私钥,那么公钥会在CA证书链中保存,公钥和私钥证书订阅人拿到后,会将其部署在WEB服务器上

  1. 当浏览器访问我们的https站点时,它会去请求我们的证书
  2. Nginx会将我们的公钥证书回传给浏览器
  3. 浏览器会去验证我们的证书是否合法的、是否是有效的
  4. CA机构会将过期的证书放置在CRL服务器,那么CRL服务的验证效率是非常差的,所以CA又推出了OCSP响应程序,OCSP响应程序可以查询指定的一个证书是否过期,所以浏览器可以直接查询OCSP响应程序,但OCSP响应程序性能还不是很高
  5. Nginx会有一个OCSP的开关,当我们开启后,Nginx会主动上OCSP上查询,这样大量的客户端直接从Nginx获取,证书是否有效

HTTPS通讯原理

file

  1. 第一步客户端向服务端发送Client Hello消息,这个消息里包含了一个客户端生成的随机数Random1、客户端支持的加密套件和客户端支持TLS协议版本等信息
  2. 服务端会向客户端发送Server Hello消息。返回自己的公钥证书、挑选一个核实的加密套件、另外还会生成一份随机数Random2推送给客户端。至此客户端和服务端都拥有了两个随机数(Random1+Random2)
    3.客户端收到服务端传来的公钥证书后,先从CA验证该证书的合法性(CA公钥去解密高腰证书),验证通过后取出证书中的服务端公钥,再生成一个随机数Random3再用服务端公钥非对称加密Random3
  3. 服务端用自己的私钥解出客户端生成的Random3.至此,客户端和服务端都拥有Random1+Random2+Random3,两边根据同样的算法生成一份密钥,握手结束后的应用层数据都是使用这个密钥进行对称加密。
最后修改日期: 2024年3月21日

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。