HTTPS 是基于 HTTP 协议与 SSL/TLS 协议组合而成的安全协议。HTTPS 的连接过程主要包括握手和数据传输两个阶段。
一、握手阶段
(1)客户端向服务器发送一个https连接请求。
(2)服务器将自己的证书(含公钥)和签名发送给客户端。
(3)客户端验证证书的合法性【用公钥解密签名得出散列值,与直接将证书进行散列得出的值进行比对】,如果证书有效,则生成一个随机数(称为 Pre-master secret),并使用证书中的公钥加密该随机数,然后将加密后的随机数发送给服务器。
(4)服务器使用自己的私钥解密客户端发来的 Pre-master secret,得到随机数。然后服务器和客户端使用该随机数生成一个用于加密和解密数据的秘钥(称为 Session Key)。
(5)服务器将使用 Session Key 加密的信息发送给客户端,客户端使用 Session Key 解密该信息并验证握手过程的合法性。
二、数据传输阶段
在握手阶段完成后,客户端和服务器之间建立了一个安全通道,可以安全地传输数据。在数据传输阶段中,客户端和服务器使用 Session Key 加密和解密数据,保证数据的机密性和完整性。
总的来说,HTTPS
连接的过程是比较复杂的,主要包括握手和数据传输两个阶段。在握手阶段中,客户端和服务器之间完成了身份认证、秘钥协商和加密算法协商等操作;在数据传输阶段中,客户端和服务器之间使用
Session Key 加密和解密数据,保证数据的安全性。这样,即使数据在传输过程中被截获,黑客也无法解密数据,保护了用户的隐私。
-----------------------------------------------------------------------------------------
选修部分
CA(Certificate Authority)是数字证书颁发机构,类似于身份证办证中心。它的作用是验证网站的身份,并签发数字证书。
证书是一种文件,里面包含了网站的公钥和一些相关信息,如证书持有者、颁发机构等。它的作用是证明网站的身份,防止中间人攻击。在 HTTPS 连接中,服务器会将自己的证书发送给客户端,客户端会验证证书的合法性。
公钥是一种密码学算法,用于加密和解密数据。它是与私钥相对应的,可以将数据加密后,只有私钥持有者才能解密。在 HTTPS 连接中,服务器会将自己的公钥发送给客户端,客户端使用该公钥加密数据,再发送给服务器。
公钥和私钥是一对密钥,是在使用非对称加密算法时生成的。其中,公钥是公开的,任何人都可以获得,私钥是保密的,只有密钥持有者才能获得。
签名是一种数字签名算法,用于验证数据的完整性和真实性。它可以确保数据没有被篡改或伪造。在 HTTPS 连接中,服务器会使用自己的私钥对证书进行签名,客户端使用服务器的公钥验证签名的合法性。
私钥和秘钥是同一个概念,是一种密码学算法,用于加密和解密数据。私钥只有服务器持有,用于解密客户端发送的加密数据。
在 HTTPS 连接中,服务器会生成一对公钥和私钥,并将其存储在服务器上。当客户端请求建立 HTTPS
连接时,服务器会将自己的公钥发送给客户端。客户端使用服务器的公钥加密数据,只有服务器持有相应的私钥才能解密数据。这样,即使数据被截获,黑客也无法解密数据,保证了数据的安全性。
秘钥是一种对称加密算法中使用的密钥,是在建立 HTTPS 连接时通过密钥协商协议生成的。在 HTTPS
连接中,客户端和服务器会协商出一个秘钥,用于对数据进行加密和解密。由于秘钥是对称的,只有持有相同秘钥的客户端和服务器才能加密和解密数据。秘钥的生成和协商过程是在
HTTPS 握手过程中完成的。
简单来说,公钥和私钥是用于非对称加密的密钥,用于保证数据的安全性和身份认证;秘钥是用于对称加密的密钥,用于保证数据的机密性。在 HTTPS 连接中,公钥和私钥用于建立安全通道,秘钥用于加密和解密数据。
在 HTTPS 连接中,服务器只需要生成一对公钥和私钥。这对密钥通常是长期使用的,直到证书过期或者被撤销才会重新生成。
在 HTTPS 连接的握手过程中,客户端和服务器会协商出一个秘钥,用于对数据进行加密和解密。这个秘钥通常是一次性的,每次建立连接时都会重新生成。
因此,在 HTTPS 连接中,公钥和私钥是长期有效的,而秘钥是短期有效的。这种方式既保证了数据的安全性,又保证了连接的效率。