https和http的区别是什么

时间:2024-09-08 10:05:38

您可能知道 HTTPS 比 HTTP 更安全。但它们之间到底有什么区别呢?什么是密钥和 TLS/SSL 认证?

如何在客户端和服务器之间交换数据

当在浏览器中键入 url 的名称时,它会向您的服务器发送请求。但是HTTP(超文本传输协议)和HTTPS(安全超文本传输协议)协议之间存在显着差异。

HTTP的

当客户端通过 http 与服务器通信时,所有数据都以纯文本形式发送。如果有黑客能够捕获数据,发送到服务器,那么黑客可以毫不费力地读取它们。此外,HTTP 使用低于 HTTPS 的步长来启动数据交换。

HTTPS的

与HTTP不同,HTTPS发送的数据是完全加密的。这意味着,只有正确的服务器才能解密客户端发送的数据。。

在上图中,可以看到在客户端和服务器之间交换数据所需的步骤的另一个差异: TLS 握手

TLS(传输层安全性)握手

HTTP和HTTPS之间最显着的区别是,数据交换是加密的。这要求客户端和服务器都有一个密钥,只有使用该密钥才能加密和解密数据。为了建立这样的安全连接,HTTPS使用TLS握手。

TCP 握手完成后,客户端和服务器之间建立连接。现在服务器再并要求他通过 https 连接。服务器使用其公钥进行响应。使用该公钥,客户端可以创建和加密对称密钥,并将其发送到服务器。服务器能够使用他的私钥解密对称。这样,客户端和服务器就具有相同的密钥。

但是还有问题。黑客能够捕获服务器公钥并将其替换为自己的密钥,这需要证书来解决这个问题。

证书链

服务器不仅发送公钥,还发送证书。更准确地说:它的证书和链接到它的任何 ca 证书。浏览器发送一组证书。使用这些证书,浏览器可以验证它是否是客户端想要与之通信的服务器。该验证如何进行?

客户端首先查看服务器证书。它检查它是否仍然有效,它颁发给谁,以及由谁(证书颁发机构,例如 CA A)颁发。如果客户端可以信任该证书,它如何知道?它查找颁发给 CA A 的证书,并再次检查颁发给谁以及由谁颁发的到期日期。此链一直向下,直到有一个根证书,该根证书是浏览器 TrustStore 中的证书。然后这个过程倒退。浏览器现在尝试使用 roor 证书公钥验证根证书之前的最后一个证书。该过程在证书链上向上移动,直到验证服务器证书。如果在此过程中出现任何错误,例如证书已过期,将在浏览器中收到错误消息。

现在安全吗?或者黑客可以更改证书中的公钥或替换证书吗?

服务器证书仅适用于服务器的公钥。如果更改密钥,验证过程将失败。当然,仍然存在风险。如果受信任的证书颁发机构被黑客入侵,黑客可以尝试颁发假证书。然而,这可能性不大。