为什么需要使用HTTPS?
为了验证网站是否经过身份认证/认证(未经认证的网站可能会做出恶意行为)。经过身份认证的网站拥有从CA之一购买的独特个人证书。
什么是CA(证书颁发机构)?
CA是全球值得信赖的公司,如GoDaddy、GeoTrust、VeriSign等,它们向网站提供数字证书。
什么是公钥和私钥?
密钥只是用于加密/解密数据的长随机数字。
公钥是可以与他人共享的密钥。私钥应该保密。
假设Jerry生成了一个私钥和公钥。他制作了许多公钥的副本并与其他人分享。
现在,其他人只能使用公钥加密数据,而该数据只能由Jerry的私钥解密。
另一种方法是仅使用公钥解密数据,并使用私钥仅加密数据。
公司如何获得证书?
网站所有者首先生成公钥和私钥,保持私钥机密。他将
证书签名请求文件 (CSR) 和他的
公钥 提供给 CA。
CA 根据 CSR 创建个人证书,包括域名、所有者名称、到期日期、序列号等,并在证书中添加一个
加密文本 (=
数字签名),最后使用服务器的公钥加密整个证书并将其发送回网站所有者。
然后,该证书使用网站所有者的私钥进行解密,最终安装在网站上。
注意:那个加密文本是 CA 的数字签名。该文本由 CA 的 私钥 加密,只能使用 CA 的公钥进行解密。
当您安装操作系统或浏览器时,会附带许多受信任的 CA(如 GeoTrust、VeriSign、GoDaddy)的根证书。这些根证书包含该 CA 提供商的公钥,有助于解密签名。
HTTPS安全性可以分为两个部分(握手):
1. 验证网站证书的有效性:
1) 当您输入网址www.Google.com时,Google的服务器会向浏览器提供其公钥和证书(由GeoTrust签名)。
2) 现在浏览器必须验证证书的真实性,即它是否真正来自GeoTrust。
由于浏览器预装了所有主要CA的公钥列表,因此它选择GeoTrust的公钥,并尝试解密由GeoTrust的私钥加密的证书的数字签名。
3) 如果它能够解密签名(这意味着它是一个值得信任的网站),则继续进行下一步,否则停止并在URL前显示红色交叉符号。
2. 创建安全连接(加密出站和入站数据),以便其他人无法阅读:
![enter image description here](https://istack.dev59.com/PtiF0.webp)
1)如我所述,当您输入www.Google.com时,Google会发送其公钥。使用此公钥加密的任何数据只能由Google不与任何人共享的私钥解密。
2)验证证书后,浏览器创建一个新密钥,我们称之为会话密钥并制作两个副本。这些密钥可以加密和解密数据。
3)然后,浏览器使用Google的公钥加密(1个会话密钥副本+其他请求数据)。然后将其发送回Google服务器。
4)Google的服务器使用其私钥解密加密的数据,并获取会话密钥和其他请求数据。
现在,请注意,服务器和浏览器都获得了浏览器的相同副本的会话密钥。没有其他人拥有此密钥,因此只有服务器和浏览器可以加密和解密数据。现在,此密钥将用于解密和加密数据。
5)当Google向浏览器发送请求的HTML文档和其他HTTP数据时,它首先使用此会话密钥加密数据,浏览器使用另一个会话密钥副本解密数据。
6) 同样地,当浏览器将数据发送到Google服务器时,它使用会话密钥进行加密,服务器在另一侧解密。
注意:此会话密钥仅用于该会话。如果用户关闭网站并重新打开,则会创建新的会话密钥。
您对网络永远都不会感到厌倦吗?当您在浏览器中输入www.google.com时的幕后故事