欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

计算机网络——HTTPS相关知识小结

程序员文章站 2021-12-29 11:53:31
HTTPS相关知识小结HTTP的缺点主要有下面几点:通信使用不加密的明文报文,内容可能会被窃听不验证通信方身份,有可能遭遇伪装无法证明报文的完整性,所以报文有可能会被篡改为了解决以上一系列问题,需要在HTTP的基础上加入加密处理和认证等机制,这就出现了HTTPS。HTTP协议可以和SSL(Secure Socket Layer,安全套结层)或TLS(Transport Layer Security,安全层传输协议)组合使用,来加密HTTP的通信内容。其中与SSL组合使用的HTTP被称为HT...

HTTPS相关知识小结

HTTP的缺点

主要有下面几点:

  • 通信使用不加密的明文报文,内容可能会被窃听
  • 不验证通信方身份,有可能遭遇伪装
  • 无法证明报文的完整性,所以报文有可能会被篡改

为了解决以上一系列问题,需要在HTTP的基础上加入加密处理和认证等机制,这就出现了HTTPS。

HTTP协议可以和SSL(Secure Socket Layer,安全套结层)或TLS(Transport Layer Security,安全层传输协议)组合使用,来加密HTTP的通信内容。其中与SSL组合使用的HTTP被称为HTTPS(HTTP Secure,超文本传输安全协议)。

HTTPS的本质

正如上面所说,HTTPS并不是应用层的一种新协议,而是身披SSL外壳的HTTP。为什么这样说呢?因为两者的区别就在于:HTTPS协议中,SSL或TLS作为HTTPS和TCP的中间层,如下图所示:

计算机网络——HTTPS相关知识小结

SSL

SSL是独立于HTTP的协议,是当今世界上应用最广泛的网络安全技术。

它采用**公开密钥加密(非对称密钥加密)**的方式进行加密。

对称加密和非对称加密

对称密钥加密

也称为共享密钥加密。即加密和解密同用同一个密钥的方式进行加密。

缺点:无法将密钥安全地发送给对方,因为在发送过程中信息可能被第三方劫持而导致密钥泄露,因此有了下面的非对称加密技术。

非对称密钥加密

也称为公开密钥加密。这种方式使用两把密钥,一把叫私有密钥,另一把叫公开密钥。这种方式很好地解决了对称加密的问题。

在通信时,发送密文的一方使用对方的公开密钥进行加密,接收方使用自己的私有密钥对收到的信息进行解密。这样就不需要发送用来解密的私有密钥,就不存在对称密钥加密的问题了。

这种方式进行加密解密的算法叫做RSA

缺点

  • 算法复杂,加密解密效率较低
  • 无法证明公开密钥本身就是真正的公开密钥。真正的公开密钥有可能被第三方替换。

HTTPS的加密方式

HTTPS采用对称加密和非对称加密混合的加密方式。

两种方式取长补短,结合食用效果更佳。在交换密钥时(也就是在建立SSL连接时)使用非对称加密,在两端建立连接后(也就是在传输HTTP报文时)采用对称加密提高数据交换效率。

数字签名和数字证书

数字签名

数字签名是附加在消息后的一段特殊的加密过的校验码。

作用

  • 报文鉴别:接受者能够核实收到的报文是发送者发送的
  • 确保报文完整性:接受者收到的数据和发送者发送的内容完全一样,没被修改过
  • 不可否认:发送者事后不能抵赖对报文的签名

生成签名:A方用自己的私钥对消息“加密”

具体步骤:

  • 对消息进行哈希计算,得到哈希值
  • 利用私钥对哈希值进行加密,生成签名
  • 将签名附加在消息后面,一起发送过去

验证签名:B方或其他任何一方使用A方的公钥进行“解密”

具体步骤:

  • 收到消息后,提取消息中的签名
  • 用公钥对签名进行解密,得到哈希值1。
  • 对消息中的正文进行哈希计算,得到哈希值2。
  • 比较哈希值1和哈希值2,如果相同,则验证成功。

由于A的私钥是唯一的,而且没有其他人知道A的私钥,所以除了A没有别人可以生成和他相同的密文,因此可以确认是A方发送的。

数字证书

数字证书就是由可信赖的证书认证机构(Certification Authority, CA)颁发的公开密钥证书。

申请人申请后CA会对申请人的公钥进行数字签名,然后CA会将公钥证书(也叫数字证书、证书)颁发给申请人。

作用:就是为了解决非对称加密中 “接收方无法验证收到的公开密钥就是发送方发送的公开密钥” 这一问题。

有了数字证书后,客户端和服务端通信流程:

  1. 客户端向服务器建立通信之前首先向服务器请求获得服务器的证书。
  2. 服务器收到请求后把数字证书发送给客户端。
  3. 客户端获得服务器的证书之后,然后与可信任的第三方机构证书进行验证,验证通过后则进行正常的内容通信。

HTTPS通信流程

先通过SSL两次握手建立SSL安全连接后,就可以进行应用层的HTTP通信,通信完成后会关闭TCP连接。

第一次SSL握手

  1. 客户端发送Client Hello报文开始进行SSL通信

  2. 服务端可以进行SSL通信时,会回应Server Hello报文。

  3. 服务器发送包含公钥证书的报文

  4. 服务器发送Server Hello Done报文给客户端,SSL第一次握手结束。

    第二次SSL握手

    此次握手成功与否取决于服务器能否正确解密第7步客户端发送的Finished报文

  5. 客户发送Client Key Exchange报文,报文中包含一个随机密码串(叫做Pre-master secret),此报文已被步骤3中的公钥加密

  6. 客户端继续发送Change Cipher Spec报文,它会提示服务器采用第5步中的随机密码串进行加密

  7. 客户端发送Finished报文,它包含以上步骤的整体校验值。

  8. 服务器回应Change Cipher Spec报文

  9. 服务器回应Finished报文,自此SSL连接建立完成,后面即可开始通过HTTP请求交换数据

    开始进行HTTP请求和响应

  10. 客户端发送HTTP请求报文

  11. 服务端发送响应报文

  12. 经过许多次HTTP数据交换(即10、11两步)后,由客户端断开连接,发送close_notify报文。后面客户数会再发生TCP FIN报文关闭TCP连接。

参考资料

《图解HTTP》

什么是数字签名和证书?

本文地址:https://blog.csdn.net/qq_43935080/article/details/107619113

相关标签: 计算机网络