https通信机制(http + ssl/tls)

https(http+ssl)

  • https协议不是应用层的新协议,只是HTTP通信接口部分用SSL 或 TLS协议代替
  • 一般情况,HTTP直接和tcp通信,使用SSL时,变成HTTP先和SSL通信,然后SSL在和TCP通信
  • SSL独立于HTTP,其他运行在应用层的协议,比如SMTP,Telnet等都可以配合SSL使用

SSL采用的是公开密钥加密:

  1. 公开密钥加密: 非对称的秘钥, 一把私有秘钥,一把公开秘钥。发送密文的一方使用对方的公开秘钥加密,对方接收后用自己的私钥解密
  2. 对称秘钥加密: 加密和解密用同一个秘钥

https采用混合加密机制:

交换秘钥缓解使用公钥加密,建立通信交换报文时用共享秘钥加密

CA证书(浏览器开发商一般会内置常用的公钥)

  1. 服务器运营人员向数字证书认证机构提出公钥的申请;
  2. 认证机构判明身份后,对已经申请的公钥做数字前民,分配这个已签名的公钥;
  3. 将该公钥放入公钥证书后绑定在一起;
  4. 服务器将这份公钥证书发给客户端,用于公开密钥加密方式通信;
  5. 接到证书后,客户端使用公钥对证书上的数字签名验证;(安全转交给客户端很困难,所以用内置的)

HTTPS通信

步骤详解:

  1. 客户端发送加密通信请求(client hello)【提供协议版本,客户端生成的随机数,支持的加密方法,压缩方法等】
  2. 服务器响应,如果可进行SSL通信,以server hello 报文作为应答【确认协议版本,服务端随机数,确认加密方法,服务器证书,】
  3. 服务端发送certificate报文,包含公钥证书
  4. 服务器发送server hello done通知客户端,最初的ssl握手协商结束。
  5. 客户端发送client key exchange作为回应,包含用3中公钥加密的一个随机字符串(pre-master secret)
  6. 客户端发送编码变更通知(Change Cipher Spec),之后通信采用5中的字符串密钥加密;
  7. 客户端发送finished报文,如果服务器正确解密本次报文,则本次握手协商成功
  8. 服务端发送编码变更通知
  9. 服务端发送finished报文
  10. ssl链接成功,HTTP请求;双方都发送finished报文后,ssl链接成功,这个时候开始进行应用层协议的通信,也就是
  11. 应用层协议通信,发送HTTP响应。
  12. 客户端断开链接

发布了66 篇原创文章 · 获赞 13 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/haoyanyu_/article/details/97628195