Https协议是在Http协议的基础上加入ssl等安全协议,从而在web浏览器与网站服务器之间建立一条加密的安全传输通道,并且可以对网站进行身份认证。
一、为了实现加密传输,需要客户端与服务端协商一个秘钥K,将数据加密后传输。但是如何传输这个秘钥呢,直接明文传输的话,容易被劫持。
二、为了安全地在客户端与服务端之间进行秘钥K的交换,可以采用一对非对称秘钥K1和K2,来对其进行加密传输。
三、但是,非对称秘钥传输过程存在“中间人攻击”的问题。即存在一个攻击者,可分别劫持客户端与服务端的消息,然后利用自己生成一对伪造非对称秘钥,来劫持或篡改信息内容。
存在“中间人攻击”漏洞的根本原因在于:客户端与服务端无法认证消息来源的身份。
四、为此,需要想办法来进行认证:一种是通过双方都知道的私密信息要认证,但是这种得两者相互认识才行。一种是通过第三个双方都信任的见证人,来认证双方的身份。
五、CA就是有权威的第三方认证机构,该机构会生成一个CA证书,证书包括一个公钥文件与一个私钥文件,服务端将两者存在服务器上,然后将公钥文件及证书信息发送给客户端,
在客户端(如浏览器)一般都已经内置了一些权威机构的根证书,可以认证服务器的身份。
目前大部分都是需要在服务端安装证书,认证服务器的身份。一些银行等机构需要在客户端安装证书,用来证明客户端访问者的身份。
参考:这篇文章讲述的很浅显易懂:https://www.cnblogs.com/jinhengyu/p/10257825.html
密钥交换简单的说就是利用非对称加密算法来加密对称密钥保证传输的安全性,之后用对称密钥来加密数据。