HTTPS加密过程/原理 理解

先简单理解一下HTTP的请求过程,HTTP发送请求时,会通过TCP建立起一个到服务器的连接通道,当请求需要的数据完毕后,HTTP将TCP连接断开。然后TCP建立通道分为三次握手:

  • 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
  • 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
  • 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。 完成三次握手,客户端与服务器开始传送数据.

HTTP数据传输是明文传输的,数据加密需要自己先加密再发送请求,安全性太低了。而HTTPS在数据传输时有SSL加密,作为安全基础,HTTPS可以理解为HTTP+SSL/TLS, 即 HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL,用于安全的 HTTP 数据传输。
下面进入正题 。

HTTPS的加密过程/原理。

大概过程可先参考下图:
https加密过程本人理解图.png

首先进行https请求的前提条件是首先服务器拥有数字证书签发机构(CA)颁发的数字证书,一般为收费。CA颁发给我们的网站管理员,我们的管理员将这个数字证书放到我们的服务器上。大致过程来一张网上的图:


图片来自网络.png

条件具备,流程开始。

  • 1、服务器将携带的公钥向数字证书机构申请证书。
  • 2、数字证书机构用自己的私钥对公钥签名颁发证书,并返回给服务器。
  • 3、服务器将申请携带公钥的证书分发给客服端。
  • 4、客户端验证证书,证书机构通过验证,或者用户接受不受信任的证书(非权威机构颁发的证书)。获取到公钥。到这一步,在证书保证下服务器拥有私钥,客户端拥有公钥,可进行非对称性加密。
  • 5、使用公钥加密报文发送给服务器,其中携带随机串。其中的随机串用户传输数据时进行对称加密
  • 6、服务器使用私钥解密。获取报文信息及随机串。
  • 7、解密后服务器发送握手消息给客户端。
  • 8、客户端接受握手消息,握手结束,双方确定加密算法(使用随机串确定的对称性加密),开始传输。

注意: 确认加密算法的过程使用的是非对称性加密。
数据传输过程使用对称性加密

参考 《Http协议三次握手》 《理解https》

你可能感兴趣的:(HTTPS加密过程/原理 理解)