HTTPS加密过程
所属分类 http
浏览量 340
HTTPS即加密的HTTP,HTTPS并不是一个新协议,而是HTTP+SSL(TLS)
明文 密文 加密 解密 秘钥
对称加密 非对称加密
非对称加密需要使用一对密钥,一个公钥,一个私钥
公钥用来加密,私钥用来解密。
服务器生成一对公钥和私钥,公钥公开出去,任何人都能拿到公钥,包括黑客,而私钥只有服务器自己有。
客户端拿到公钥后,使用公钥对对称密钥进行加密,将加密后的密钥密文通过网络传输给服务器。
黑客也可以拦截到客户端发出的密文请求,但黑客只有公钥,没有私钥,无法对密文解密,此时密文请求就安全的传输给了服务器。
服务器拿到密文请求后,通过私钥对密文进行解密,得到对称密钥。
黑客没有私钥,无法解密客户端发出的密文请求,也就无法得到对称密钥,那么后续客户端和服务器就可以安全的使用对称密钥进行加密解密了。
中间人攻击
客户端需要通过网络获取服务器的公钥,但是客户端无法识别这个公钥是否是伪造
引入证书机制
证书 = 公钥 + 身份标识
数字证书认证机构(CA,Certificate Authority)
HTTPS 通讯三个阶段
认证服务器
浏览器内置一个受信任的CA机构列表,并保存了这些CA机构的证书。
第一阶段服务器会提供经CA机构认证颁发的服务器证书,如果认证该服务器证书的CA机构,存在于浏览器的受信任CA机构列表中,
并且服务器证书中的信息与当前正在访问的网站(域名等)一致,那么浏览器就认为服务端是可信的,并从服务器证书中取得服务器公钥,用于后续流程。
否则,浏览器将提示用户,根据用户的选择,决定是否继续。
协商会话密钥。
客户端在认证完服务器,获得服务器的公钥之后,利用该公钥与服务器进行加密通信,协商出两个会话密钥,
分别是用于加密客户端往服务端发送数据的客户端会话密钥,用于加密服务端往客户端发送数据的服务端会话密钥。
在已有服务器公钥,可以加密通讯的前提下,还要协商两个对称密钥的原因,是因为非对称加密相对复杂度更高,在数据传输过程中,使用对称加密,可以节省计算资源。
另外,会话密钥是随机生成,每次协商都会有不一样的结果,所以安全性也比较高。
加密通讯。
此时客户端服务器双方都有了本次通讯的会话密钥,之后传输的所有Http数据,都通过会话密钥加密。
这样网路上的其它用户,将很难窃取和篡改客户端和服务端之间传输的数据,从而保证了数据的私密性和完整性。
HTTPS通信步骤
步骤 1 :
客户端通过发送Client Hello报文开始SSL通信(这里是在TCP的三次握手已经完成的基础上进行的)。
报文中包含客户端支持的SSL的指定版本、加密组件列表(所使用的加密算法及密钥长度等)。
步骤 2 :
服务器可进行SSL通信时,会以Server Hello报文作为应答。
和客户端一样,在报文中包含SSL版本以及加密组件。
服务器的加密组件内容是从接收到的客户端加密组件内筛选出来的。
步骤 3 :
之后服务器发送Certificate报文。报文中包含公开密钥证书。
步骤 4 :
最后服务器发送Server Hello Done 报文通知客户端,最初阶段的SSL握手协商部分结束。
步骤 5 :
SSL第一次握手结束之后,客户端以Client Key Exchange报文作为回应。
报文中包含通信加密中使用的一种被称为Pre-master secret的随机密码串。该报文已用步骤3中的公开密钥进行加密。
步骤 6 :
接着客户端继续发送Change Cipher Spec报文。该报文会提示服务器,在此报文之后的通信会采用Pre-master secret密钥加密。
步骤 7 :
客户端发送Finished报文。该报文包含连接至今全部报文的整体校验值。
这次握手协商是否能够成功,要以服务器是否能够正确解密该报文作为判定标准。
步骤 8 :
服务器同样发送Change Cipher Spec报文。
步骤 9 :
服务器同样发送Finshed报文。
步骤 10:
服务器和客户端的Finished报文交换完毕之后,SSL连接就算建立完成。当然,通信会受到SSL的保护。从此处开始进行应用层协议的通信,即发送HTTP请求。
步骤 11 :
应用层协议通信,即发送HTTP响应。
步骤 12 :
最后由客户端断开连接。断开连接时,发送close_notify报文。
在以上流程中,应用层发送数据时会附加一种叫做MAC(Message Authentication Cods)的报文摘要。
MAC能够查知报文是否遭到篡改从,从而保护报文的完整性。
上一篇
下一篇
拼音字母分类
mybatis关闭一级二级缓存
Eureka 和 ZooKeeper 注册中心 区别
k8s SC PV PVC
k8s pod
docker save 和 docker export