Https

56 阅读2分钟

Http所有内容都是明文,会容易被篡改,因此引入Https(Http Over SSL/TLS),添加了SSL/TLS进行加密。 Http原本是直接运行在Tcp之上的

  • Http
  • SSL/TLS 1.2/1.3
  • TCP
  • IP
  • MAC

SSL1.0 → SSL2.0 → SSL3.0 → TLS1.0 → TLS1.1 → TLS1.2 → TLS1.3

SSL:secure socket layer,是TLS的前身,现在被淘汰了。

TLS:主流使用的版本1.2或1.3。TLS/1.2最核心的两个算法是RSA和DH。

安全协议需要考虑

  1. 机密性

我们的网络内容不能以明文的形式在网络中传输。对称加密/非对称加密。

  1. 完整性

不能被修改,就算修改了我们也能发现。Hash算法,算出内容摘要。

  1. 身份认证 服务器需要SSL证书,证书需要向CA申请。证书里包括了特定的公钥和私钥。 CA

TLS1.2客户端服务器通信过程:

仍然有TCP3次握手,TCP三次握手以后。

  1. ClientHello_客户端向服务器发送请求,里面包含了TLS versionClient短生成的随机数第1随机数Cipher Suites(Client支持的加密算法)/RSA/ECC...
  2. ServerHello_答复,包含了TLS version,Server端产生的随机数第2随机数、Cipher Suites
  3. Certificate服务器响应出示证书。_Server端确认后会发送一个证书链条。客户端[如浏览器]就可以根据自己信任的证书列表确定这个服务器是否可信。
  4. Server Key Exchange。 Server和client互换Key。服务器就把公钥发送给了客户端。如果服务器也想要客户端的证书会在这里发出请求。[如登录网银]
  5. ServerHelloDone发送完了
  6. 客户端生成随机数预主密钥第3随机数预主密钥。用收到的公钥加密后在发给服务端。
  7. 服务端收到后用自己的私钥解密就知道预主密钥了。
  8. 客户端用第1随机数和第2随机数和预主密钥计算出会话密钥
  9. 服务端用第1随机数和第2随机数和预主密钥计算出会话密钥,与客户端得到的是相同的。
  10. 服务端发送Encrypted Handshake Message
  11. 对通信进行对称加密。

注:

  1. 如果TLS版本不能得到确认,会终止在step 2。
  2. 如果步骤3的证书链条有问题,就会终止在步骤3了。
  3. 通信分为密钥交换和对称加密通信

【参考:】

  1. tls12.xargs.org/