HTTPS
http和https的区别
基础的HTTP通信是明文的,有三大风险:信息被窃听,信息被篡改,身份被冒充
https相对于http增加了TSL(SSL)
TSL协议使用非对称加密保护下的对称加密在保证通信效率的同时防止窃听,使用证书体系防止信息篡改和身份冒认
TLS握手是在TCP三次握手之后进行的。这是因为HTTPS是基于TCP传输协议实现的,所以需要先建立完可靠的TCP连接,然后才能进行TLS握手。
TCP三次握手的主要目的是建立客户端和服务器之间的连接,确保数据包的可靠传输。在这个过程中,客户端和服务器会交换一些信息,如序列号、确认号等,以确认双方都已准备好进行数据传输。
一旦TCP连接建立成功,就可以进行TLS握手了。TLS握手的主要目的是在客户端和服务器之间建立一个安全的加密连接。在这个过程中,双方会交换证书、协商加密算法和生成会话密钥等,以确保后续传输的数据能够安全、保密、完整地传输。
请注意,虽然一般情况下TLS握手是在TCP三次握手之后进行的,但在特定的条件下,如客户端和服务端都开启了TCP Fast Open功能且TLS版本是1.3,并且客户端和服务端已经完成过一次通信时,TLS握手过程可能会与TCP三次握手同时进行。然而,这种情况并不常见,通常需要满足特定的前提条件。
https过程
浏览器和服务器之前的加密解密过程
验证证书的有效性的过程:
认证机构的工作
认证机构会生成一对秘钥, 公钥和私钥
公钥证书的生成包括了两部分内容
- 数字签名
- 服务器公钥
其中数字签名的生成过程是:
- 服务器公钥 经过数字摘要算法 生成数字指纹
- 把生成的数字指纹 在用认证机构的私钥加密 生成数字签名
https中客户端验证公钥证书的过程
服务器将公钥证书发送给客户端 客户端验证公钥证书 从而确保公钥的合法性
- 客户端取出提前内置在手机内部的认证机构的公钥
- 用认证机构的公钥去解密公钥证书里的数字签名 从而得到数字指纹
- 客户端对公钥证书的服务器公钥进行 数字摘要算法 从而生成数字指纹
- 对比客户端自己生成的数字指纹(第3步)和解密得到的数字指纹(第2步)是否一致 如果一致则公钥证书验证通过
备注:
将信息用公钥加密后,可以使用私钥解密;
将信息用私钥加密后,通常可以使用公钥解密。