• 为什么需要HTTPS?


    目录

    1、HTTP

    2、HTTPS

    2.1 解决信任问题——证书

    2.2 解决明文传输和完整性问题——加密

    2.3 HTTPS实现原理


    1、HTTP

    HTTP:超文本传输协议,是一种常用的应用层协议,它用于传输客户端和服务器端的数据。HTTP具体详见(184条消息) 详谈HTTP协议_不会秃头的小齐的博客-CSDN博客_http地址

    HTTP的使用很简单也很方便,但却存在以下3个致命的问题:

    1、使用明文通讯,内容可以被监听。(比如前后端交互前开启Fiddler抓包,或者用开发者工具很容易就能获取到传输数据)

    2、不验证通讯方的真实身份,可能会遭到伪装,那么我们的数据也很容易就被监听到。(在客户端和服务器端中间有个伪装人)

     3、无法证明报文的完整性,很容易被篡改。

    鉴于以上三种问题,所以我们有了HTTPS来替代HTTP。

    2、HTTPS

    首先来说HTTPS并不是一种新的协议,而是在HTTP协议的基础上添加了加密机制SSL(Secure Socket Layer)或TLS(Transport Layer Security)。

    SSL和TLS可以认为是一种东西的两个不同的版本。

    HTTPS = HTTP + 加密 + 认证 + 完整性保护

    2.1 解决信任问题——证书

    HTTPS解决信任问题采用的是数字证书的解决方案,也就是在服务器创建之初,会先向一个大家都认可的第三方平台申请一个可靠的数字证书,然后在客户端访问服务器时,服务器端会先将自己的证书发给客户端,来证明自己是一个可靠的服务器,而非“中间人”。

    此时客户端就会对证书进行有效性验证,如果证书有问题,那么客户端会立即中止通讯,如果没问题才会继续执行后续操作。

    百度服务器发送到浏览器的证书:

     

    2.2 解决明文传输和完整性问题——加密

    加密主要分为两大类:

    ①对称加密,在对称加密中,有一个共享密钥,通过这把共享密钥可以实现信息的加密和解密,它的特点是加密和解密的速度很快,但因为共享密钥的问题,一旦共享密钥被截获,那么所谓的加密和解密也就是一纸空谈了。

    ②非对称加密,有一对密钥:公钥和私钥,使用公钥可以加密信息,但不能解密信息,使用私钥可以解密信息。它的特点是服务器端保存私钥,不对外暴露,只将公钥发送给客户端,而其他人就算截获了公钥,也无法解密信息,所以此方式更安全,但非对称加密的执行速度比较慢。

    HTTPS中用了哪种加密方式呢?

    使用对称加密,速度快,但不安全;使用非对称加密,安全但速度慢,所以为了既安全又相对高效,HTTPS中两种加密方式都用到了。

    2.3 HTTPS实现原理

    实现过程概述:

    ①浏览器通过HTTPS协议访问服务器;

    ②服务器端收到HTTPS请求,使用非对称加密,准备一把公钥,一把私钥,此时将自己的证书和公钥发送给浏览器;

    ③浏览器接收到服务器端发来的信息后,先验证证书是否有效,若有效,则进行下一步:使用对称加密,用共享密钥对数据进行加密,然后再用公钥对共享密钥进行加密,然后将加密的数据和加密的共享密钥发送给服务器端;

    ④服务器端收到信息后,用保留在服务器端的私钥进行解密拿出共享密钥,再用共享密钥打开数据,获取数据信息;

    ⑤由于现在客户端和服务器端都有了一把共享密钥,所以以后进行数据传输就不需要用公钥和私钥了(之所以怕数据被截获,主要是钥匙的传输过程不安全),直接用各自的共享密钥进行数据的加密解密。

  • 相关阅读:
    【owt-server】内部传输机制4 :TransportServer 及TransportSession 管理
    springboot整合redis
    26岁月薪从7k到17K,这一切都要从那年失业讲起...
    了解高防服务器的工作原理
    Git使用实践指南
    Spring中AOP使用场景
    web前端期末大作业 html+css+javascript化妆品网页设计实例 企业网站制作
    利用C++开发一个迷你的英文单词录入和测试小程序
    如何让异步序列(AsyncSequence)优雅的感知被取消(Cancel)
    商业化之路怎么走,一家开源分布式数据库厂商的答案|爱分析调研
  • 原文地址:https://blog.csdn.net/weixin_46972127/article/details/126293586