65.9K
CodeProject 正在变化。 阅读更多。
Home

理解HTTPS协议

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.85/5 (17投票s)

2015 年 5 月 28 日

CPOL

5分钟阅读

viewsIcon

21342

理解HTTPS协议

这篇博文 理解HTTPS协议 最先发布在 codecompiled

如今,我们看到大多数网站都使用HTTPS协议来提供网页。更常见的是,我们会在包含敏感信息的网站上看到HTTPS协议,例如银行网站。

如果我们访问Google并查看地址栏中的地址,我们会看到如下地址:

HTTPS protocol

如上所示,“https”用绿色高亮显示,并且前面有一个符号,表示该网页是通过https协议请求的。

HTTPS是HTTP协议的一个版本,用于在浏览器和服务器之间安全地传输数据。

浏览器和服务器之间的通信是通过HTTP协议进行的。当我们使用HTTP协议时,客户端将信息提交给服务器,这些信息在网络上传输时是未加密的。

因此,如果某个入侵者能够访问浏览器和服务器之间通信所在的物理网络,那么他就能访问在Web浏览器和Web服务器之间传输的信息。

HTTPS
在许多不需要过多安全措施来加密数据的场景下,HTTP是可以的。但对于发送信用卡详细信息和其他敏感信息的银行应用程序等应用来说,这可能是一种安全威胁。如果有一个入侵者监视着通信通道,他可能会轻易地获取终端用户提供的敏感信息。

HTTPS确保安全通信

为防止这种安全威胁,我们使用HTTPSHTTPS是一种用于保护在Web浏览器和Web服务器之间传输的数据的协议。

HTTP是HTTP协议+SSL协议。SSL是一种通过加密信息来在网络上提供安全通信的协议。它使用非对称加密,这意味着公钥可以自由分发,而私钥只有消息的接收者才能获得。

与普通HTTP协议相比,HTTPS协议提供了两个优势:

  • 它确保用户正在与正确的网站进行通信,而不是与某个入侵者通信。
  • 它确保Web浏览器和Web服务器之间的通信内容是加密的,因此入侵者无法访问。

因此,在HTTPS中,SSL负责保护在客户端和Web服务器之间传输的数据。

HTTPS流程

要理解HTTPS协议如何工作,我们应该理解加密和解密过程是如何进行的。

加密意味着我们将文本转换为另一种形式,使其对他人来说是不可读的。
解密意味着我们将加密文本转换回原始形式。

加密和解密过程还可以使用密钥来加密和解密信息。因此,如果信息使用一个密钥进行加密,那么它就可以使用相同的密钥进行解密。这被称为对称密钥,因为加密和解密使用相同的密钥。

如果我们使用一个密钥加密字符串,并使用另一个不同的密钥解密字符串,那么这个密钥被称为非对称密钥。我们用于加密字符串的密钥被称为公钥,而我们用于解密字符串的密钥被称为私钥。

ENCRYPTION IN HTTPS

现在我们知道了HTTPS用于在Web服务器和Web浏览器之间安全地传输信息。在通过HTTPS协议传输信息时,有一个明确定义的流程。
当浏览器使用HTTPS协议请求页面时,会发生以下流程:

  1. 浏览器向服务器发送一个HTTPS请求,服务器监听端口443,这是Web服务器用于监听HTTPS协议请求的端口。
  2. 一旦Web浏览器和Web服务器之间的连接成功,就会发生SSL握手过程

    在握手过程中,浏览器和服务器会就使用哪种加密算法来加密数据等事项达成一致。因此,握手过程是Web浏览器和Web服务器之间关于如何加密数据的协议。握手过程中会发生以下情况:

    • 浏览器向服务器发送一个“hello”消息,其中包含有关浏览器自身的一些信息,例如它支持的SSL版本。
    • 服务器以类似的“server hello”消息进行响应,其中包含将用于通信的SSL版本等信息。
    • Web服务器向浏览器发送一个证书,其中包含用于加密数据的公钥。证书还包含其他信息,例如证书的颁发者、证书的有效期以及服务器身份。因此,浏览器可以确信服务器是其打算连接的服务器。
    • 浏览器验证服务器证书,并发送一个certificate verify消息,告知服务器证书已验证。
    • 浏览器发送一个“Change cipher spec command”命令,告知服务器它现在将发送给服务器的数据将被加密。
    • 服务器以类似的“Change cipher spec command”命令进行响应,告知浏览器它现在将发送给浏览器的数据将被加密。

    如果在Chrome中点击锁符号,我们可以看到服务器发送的数字证书。

    Digital Certificate HTTPS

  3. 浏览器生成一个对称密钥,并使用从服务器证书中获取的公钥对其进行加密。浏览器将此加密的对称密钥发送给服务器。此对称密钥用于整个会话的加密和解密。

我们知道数字证书用于提供公钥。与数字证书相关的有两个重要术语需要理解。

X.509是一个标准,用于定义数字证书的格式,例如数字证书将包含哪些信息。X.509证书包含以下部分信息:

  • 版本:指定X.509版本
  • 序列号:分配给证书的唯一编号,用于区分证书
  • 颁发者名称:这通常是证书颁发机构
  • 公钥:证书的公钥

证书颁发机构CA是颁发数字证书的实体。我们需要从CA获取数字证书。数字证书由CA签名,这确保了证书的有效性。

这篇博文 理解HTTPS协议 最先发布在 codecompiled

© . All rights reserved.