#什么是https https = http + ssl/tls协议:在https数据传输的过程当中,须要用ssl/tls对数据进行加密和解密,而后用http对加密后的数据进行传输。算法
#秘钥相关概念 对称加密:信息的发送方和接收方使用同一个密钥去加密和解密数据。对称加密的特色是算法公开、加密和解密速度快 非对称加密:使用一对密钥,即公钥和私钥,且两者成对出现。私钥被本身保存,不能对外泄露。公钥指的是公共的密钥,任何人均可以得到该密钥。用公钥或私钥中的任何一个进行加密,用另外一个进行解密。服务器
#具体流程 能够分为两个阶段:握手阶段和数据传输阶段session
握手阶段dom
客户端开始请求:发送自身支持的ssl版本信息、加密算法、一个随机数(random_c)加密
服务器收到请求:响应确认ssl版本、确认加密算法、服务器公钥(pubkey_s)、一个随机数(random_s)ssl
客户端收到了服务器的公钥,开始验证:验证经过后:客户端会根据前面的random_c和random_s生成一个随机数pre-master secret,而后使用pubkey_s进行加密,发给服务端,同时会根据random_c、random_s、pre-master secret经过必定的算法得出session Keyio
服务端经过私钥来解密,获得pre-master secret,而后也经过random_c、random_s、pre-master secret经过必定的算法得出session Keyast
数据传输阶段 采用对称加密,经过上个阶段产生的sessionKey进行加密和解密tls