返回

揭秘HTTPS连接之TLS1.2协定

前端

HTTPS之TLS1.2连接过程(三)

网络世界的传输层安全协议TLS 1.2,是以TLS扩展记录协议(record protocol)为基础的网络安全协议。它通过在网络传输中使用加密技术,确保数据在传输过程中免受窃听、篡改或伪造。在这第三篇的文章中,我们将继续深入探讨HTTPS之TLS 1.2连接过程,重点关注握手协议的协商过程、密钥交换和证书验证。

三、协商握手

客户端和服务器在建立连接时,需要协商双方支持的加密算法和哈希函数,以确保通信双方能够安全地交换信息。协商握手协议通常包括以下步骤:

  1. 客户机问候(Client Hello) :客户端向服务器发送一个客户端问候消息,其中包含以下信息:

    • 协议版本:客户端支持的最高TLS版本
    • 随机数:一个随机生成的字节序列,用于生成会话密钥
    • 加密套件:客户端支持的加密算法和哈希函数的列表
    • 压缩方法:客户端支持的压缩方法列表
  2. 服务器问候(Server Hello) :服务器向客户端发送一个服务器问候消息,其中包含以下信息:

    • 协议版本:服务器选择的最高TLS版本
    • 随机数:一个随机生成的字节序列,用于生成会话密钥
    • 加密套件:服务器选择的加密算法和哈希函数
    • 压缩方法:服务器选择的压缩方法
  3. 证书(Certificate) :服务器向客户端发送其证书。证书包含服务器的公钥、签发证书的证书颁发机构(CA)的名称、证书的有效期等信息。

  4. 证书请求(Certificate Request) :如果服务器需要客户端提供证书,则会向客户端发送一个证书请求消息。证书请求消息包含以下信息:

    • 签名算法:服务器支持的签名算法列表
    • 加密算法:服务器支持的加密算法列表
  5. 客户机证书(Client Certificate) :如果客户端拥有证书,则会向服务器发送其证书。

  6. 服务器密钥交换(Server Key Exchange) :服务器向客户端发送其公钥。

  7. 客户机密钥交换(Client Key Exchange) :客户端使用服务器的公钥加密一个随机数,并向服务器发送加密后的随机数。

  8. 更改密码规范(Change Cipher Spec) :客户端和服务器互相发送一个更改密码规范消息,以指示接下来将使用协商好的加密算法和哈希函数。

  9. 完成(Finished) :客户端和服务器互相发送一个完成消息,以确认握手协议的成功完成。

至此,客户端和服务器完成了握手协议的协商,并建立了一个安全连接。

四、密钥交换

在握手协议的协商过程中,客户端和服务器会交换密钥。密钥交换的目的是为了生成一个双方共享的会话密钥,该会话密钥将用于加密和解密通信数据。在TLS 1.2中,常用的密钥交换算法包括:

  • RSA密钥交换 :RSA密钥交换算法是一种非对称加密算法,使用一对公钥和私钥进行加密和解密。服务器将公钥发送给客户端,客户端使用公钥加密一个随机数,并向服务器发送加密后的随机数。服务器使用私钥解密随机数,并生成一个会话密钥。
  • DH密钥交换 :DH密钥交换算法是一种非对称加密算法,使用一对公钥和私钥进行加密和解密。客户端和服务器各自生成一对公钥和私钥,然后互相交换公钥。客户端使用服务器的公钥加密一个随机数,并向服务器发送加密后的随机数。服务器使用自己的私钥解密随机数,并生成一个会话密钥。客户端也使用自己的私钥解密服务器的公钥加密的随机数,并生成相同的会话密钥。
  • ECDHE密钥交换 :ECDHE密钥交换算法是一种非对称加密算法,使用椭圆曲线密码学(ECC)进行加密和解密。ECDHE密钥交换算法与DH密钥交换算法类似,但使用ECC而不是RSA进行加密和解密。

五、证书验证

在握手协议的协商过程中,服务器会向客户端发送其证书。客户端需要验证证书的有效性,以确保服务器是可信的。证书验证的目的是为了防止中间人攻击。在中间人攻击中,攻击者伪装成服务器,向客户端发送虚假的证书。客户端如果验证了虚假的证书,则会认为攻击者是可信的,并将通信数据发送给攻击者。

证书验证的过程通常包括以下步骤:

  1. 客户端检查证书的颁发者是否是一个受信任的证书颁发机构(CA)。
  2. 客户端检查证书的有效期是否在有效期内。
  3. 客户端检查证书的域名与服务器的域名是否匹配。
  4. 客户端检查证书是否被吊销。

如果证书验证成功,则客户端会认为服务器是可信的,并将通信数据发送给服务器。如果证书验证失败,则客户端会拒绝连接。

结语

至此,我们已经完成了对HTTPS之TLS 1.2连接过程的探索。通过学习这些知识,我们能够更好地理解HTTPS协议的工作原理,并为构建安全的网络应用提供坚实的基础。