HTTP是一种应用层协议,用于在客户端和服务器之间传递和交换超文本数据,如HTML页面、图像、音频、视频等。它使用明文传输数据,不提供加密和身份验证功能。HTTP使用TCP作为传输协议,默认使用端口号80。
HTTPS是在HTTP的基础上添加了安全性的协议。它通过在HTTP和TCP之间引入SSL/TLS协议,对数据进行加密和身份验证,确保传输的数据在网络上的安全性和完整性。HTTPS使用TCP作为传输协议,默认使用端口号443。
HTTPS加密过程
当客户端与服务器之间建立HTTPS连接时,以下是更详细的HTTPS加密过程:
-
客户端请求:客户端使用HTTPS URL(以"https://"开头)发起请求,例如在Web浏览器中输入一个HTTPS网址。
-
服务器证书:服务器接收到HTTPS请求后,会将其公开的数字证书发送给客户端。该证书包含了服务器的公钥、证书颁发机构(CA)的签名和有效期等信息。
-
客户端验证证书:客户端使用内置的根证书颁发机构列表或操作系统中的受信任证书颁发机构列表,验证服务器证书的合法性和有效性。客户端会检查证书的签名是否有效、证书是否过期、域名是否与请求的域名匹配等。
-
生成会话密钥:客户端通过使用随机数生成器生成一个随机的对称密钥(会话密钥)。该对称密钥将在加密和解密数据时使用。
-
用服务器公钥加密会话密钥:客户端使用服务器证书中的公钥对会话密钥进行加密。这样,只有服务器能够使用其私钥解密会话密钥。
-
客户端发送加密后的会话密钥:客户端将使用服务器公钥加密的会话密钥发送给服务器。
-
服务器解密会话密钥:服务器使用其私钥解密客户端发送的加密会话密钥,从而获取会话密钥。
-
安全通信建立:现在,客户端和服务器都拥有了相同的会话密钥。它们将使用该会话密钥进行对称加密和解密,确保在通信过程中传输的数据的机密性和完整性。