对称加密

双方可以用密钥对信息进行加密解密。

HTTPS原理简述_对称加密

如果client和server之间通信采用对称加密,那么双方需要有同一个密钥。如何让双方都有该密钥?

        

       假设1:client在请求时将密钥发送给server:第三方可以拦截这个信息从而获得该密钥。如果使用该方法,必须将该密钥加密后, 然后发送给server,并且只能server进行解密。

       假设2: server将密钥发送给client:相当于没有加密,所有的请求端都能拿到密钥。

 

非对称加密

加密和解密用的密钥是不同的,分为公钥和私钥。公钥加密的信息只能用对应的私钥解密,私钥加密的信息只能用对应的公钥解密。

HTTPS原理简述_技术_02

 

如果client和server之间通信采用非对称加密,只有server拥有私钥,所有的公钥server端返回给client端,这样client端用

公钥加密的信息发送给server端,只有server才能解密,因为只有server才有私钥。但是如果server用私钥加密的信息返回

给client端时,所有的client都能用公钥进行解密,也就是说server端发送给client端的信息是不安全的,第三方可以拦截并且

解密该信息。

 

非对称加密和对称加密结合使用

client和server采用对称加密进行通信,client生成自己的密钥,进行加密后发送给server,server解密后拿到该密钥,然后server就可以和client进行通信。

client如何加密自己的密钥使得只有server端才能解密,而第三方不能解密?

这就用到了非对称加密。server将公钥发送给所有的client,而密钥只有server自己有。这样client加密的内容就只能server来解密。

所以client可以用非对称的方法进行加密自己生成的密钥

 

HTTPS通信过程

HTTPS原理简述_https_03

  1.  向CA机构申请数字证书然后配置在server端。

  2. client端向server端发送HTTPS请求。

  3. server端返回数字证书,加密算法和公钥。

  4. client端验证接受到的数字证书是否和本地受信任的证书的信息一致。

  5. 证书验证有效之后,client端生成一个随机数用于对称加密的密钥。

  6. client端用证书里面的公钥对自己生成的密钥进行加密。

  7. client端向server端发送该密钥的密文。

  8. server端通过私钥来解密该密文,拿到对称加密的密钥。

  9. 之后client和server就可以通过该密钥来进行加密通信。