• HTTPS协议简介


      

    SSL/TLS

    SSL协议是用来加密HTTP传输的信息, 到1999年, SSL应用广泛, 成了互联网的事实标准, 所以IETF把SSL标准化, 称为TLS协议,中文名叫传输安全层协议。

    因此,SSL和TLS可以看做是同一个东西的不同阶段。

    解决了使用http协议带来的三个问题:

    1. 窃听风险
    2. 篡改风险
    3. 冒充风险

    SSL/TLS相当于在HTTP协议之外包裹了一层, 兼容原来的HTTP。

    HTTPS相当于HTTP over SSL,实际上是HTTP + TSL, SSL/TLS协议除了跟HTTP协议搭配外, 还能跟其他应用层协议搭配。

    SSL握手阶段

    1. 客户端向服务器发送请求, 提供支持的协议版本,一个由客户端生成的随机数,用于加密对称秘钥。
    2. 服务器回应,确认使用的加密通信协议版本,一个服务器生成的随机数,用于加密对称秘钥。
    3. 客户端收到回应后,生成一个随机数,使用数字证书里面的服务器公钥加密,防止被窃听, 发送给服务器。
    4. 服务器收到第三个随机数后,计算本次会话所使用的对称秘钥,然后回应客户端,握手结束。

    在SSL握手阶段,全部是明文传输,接下来客户端和服务器进入加密通信,完全使用加密后的http协议.

    HTTPS

    内容加密

    SSL协议采用公钥加密法, 客户端先向服务端获取公钥, 然后用公钥加密数据发送给服务端, 服务端再用私钥解密。

    为了防止公钥被篡改, 可以将公钥放在数字证书里面。 

    公钥加密计算量太大, 为了减小耗用的时间, 在每一次对话时客户端和服务端都生产一个对称秘钥, 用来加密信息, 而服务器公钥只用来加密对称秘钥本身。

    1.对称加密:加密解密使用同一秘钥

    2.非对称加密:加密和解密使用不同秘钥

    数字签名

    节点A将定长的报文提取为定长的摘要, 对该摘要应用一个签名函数, 这个函数将用户的私钥作为参数。 一旦计算出签名,就把签名附加在报文末尾, 全部发送给B.

    节点B接收了带有私钥扰码的签名, 并应用了使用公开秘钥的反函数,如果拆包后的摘要与节点B自己的摘要版本不匹配, 要么就是报文被篡改了, 要么就是发送端没有节点A的私钥。

  • 相关阅读:
    【Python】pip导出当前项目所用的包list列表
    什么叫他妈的惊喜
    自我介绍
    IDEA创建SpringBoot时无法连接https://start.spring.io
    漫话docker的衰落与kubernetes的兴起
    基于Kubernetes和OpenKruise的可变基础设施实践
    浅析
    浅析
    浅析
    浅析
  • 原文地址:https://www.cnblogs.com/tanxing/p/6984446.html
Copyright © 2020-2023  润新知