zoukankan      html  css  js  c++  java
  • HTTPS详解及常见面试题

      1.HTTP缺点:

      无连接: HTTP/1.1之前每次请求都要通过TCP建立连接断开连接,HTTP/1.1实现了持久连接

      无状态: Cookie技术和持久连接解决

      明文传输: 不安全

      HTTPS:简单讲是HTTP的安全版,在HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

      2.HTTPS特点:

      内容加密:采用混合加密技术,中间者无法直接查看明文内容

      验证身份:通过证书认证客户端访问的是自己的服务器

      保护数据完整性:防止传输的内容被中间人冒充或者篡改

      加密算法 --- RSA(混合加密机制)

        (1)共享密匙加密: 公开密匙加密解密,但是无法保证安全发送密匙

        (2)公开密匙加密: 公开密匙加密,私有密匙解密

        HTTPS:混合加密机制: 结合对称加密和非对称加密技术

        用对称加密生成的密钥对通信数据加密

        用非对称加密生成的公钥对密钥加密

        这样在保证密钥的安全性下,提高了效率


      认证 --- 防止"中间人"攻击,并验证服务器身份

        证书: 认证机构(CA)信息,公钥,域名,有效期,指纹(对证书进行hash运算,即证书摘要),指纹算法,数字签名(CA私钥密的指纹)等

        通信过程: 

        1.客户端发起 HTTPS 请求,服务端返回证书

        2.客户端对证书进行验证,验证通过后本地生成用于改造对称加密算法的随机数

        3.通过证书中的公钥对随机数进行加密传输到服务端,服务端接收后通过私钥解密得到随机数,之后的数据交互通过对称加密算法进行加解密

        验证过程:

        1. 证书是否过期

        2.CA是否可靠(查询信任的本地根证书)

        3.证书是否被篡改(用户使用CA根公钥解密签名得到原始指纹,再对证书使用指纹算法得到新指纹,两指纹若不一样,则被篡改)

        4.服务器域名和证书上的域名是否匹配

        助于理解,知乎上down的HTTPS通信流程:

                     

      

      常见面试题 :

        Q:HTTP与HTTPS区别?

        A: 1.HTTPS需要申请购买CA证书, HTTP不需要

          2.HTTP是明文传输,不安全, HTTPS是在HTTP基础上加了SSL层,更安全

          3.HTTPS效率低,HTTP效率高

        Q:HTTPS传输过程?

        A:客户端发起 HTTPS 请求,服务端返回证书,客户端对证书验证,验证通过后本地生成用于改造对称加密算法的随机数,通过证书中的公钥对随机数进行加密传输到服务端,服务端接收后通过私钥解密得到随机数,之后的数据交互通过对称加密算法进行加解密。

        Q:为什么需要证书?

        A:防止中间人攻击,验证服务器身份

       

        Q:怎么防止的篡改?

        A:证书是公开的,虽然中间人可以拿到证书,但私钥无法获取,公钥无法推断出私钥,所以篡改后不能用私钥加密,强行加密客户也无法解密,强行修改内容,会导致证书内容与签名中的指纹不匹配

  • 相关阅读:
    MVC部分视图
    windows服务
    mvc中seeeion和cook的用法
    @Html.Raw()用法和Html.ActionLink的用法总结
    FileStream类的使用(文件流)
    简单工厂和工厂模式对比
    项目案例【Net Core】如何注入多个服务实现类
    快速查找所有存储过程/触发器中是否包含某个字符串
    TortoiseGit安装与配置
    C# 中==与Equals方法比较
  • 原文地址:https://www.cnblogs.com/Duikerdd/p/12030955.html
Copyright © 2011-2022 走看看