zoukankan      html  css  js  c++  java
  • HTTP与HTTPS之面试必备

    本文主要讲解Http与https的区别,以及https是怎样加密来保证安全的。

    首先讲这俩个协议的简单区别:

    HTTP:超文本传输协议。

    HTTPS:安全套接字层超文本传输协议HTTP+SSL

    HTTP:客户端和服务器端传递的是明文的消息。

    HTTPS:将明文进行加密后再在客户端和服务器之前进行传递。

    HTTP采用80端口,而HTTPS采用443端口。

    HTTPS需要申请证书。

    HTTPS采用非对称加密和对称加密两种加密方式来保证传输信息的安全性:

    非对称加密:用公钥和私钥来加解密(有同学这里不懂的话可以看看资料)。

    对称加密:加密解密都用同一套秘钥。

    注:非对称加密更加安全,对称加密速度更快。

    https的请求流程:

    1. 客户端(浏览器)向服务器请求https连接。

    2. 服务器返回证书(公钥)到客户端。

    3. 客户端随机的秘钥A(用于对称加密)。

    4. 客户端用公钥对A进行加密。

    5. 客户端将加密A后的密文发送给服务器。

    6. 服务器通过私钥对密文进行解密得到对称加密的秘钥。

    7. 客户端与服务器通过对称秘钥加密的密文通信。

    上述过程中第2步骤中是存在风险的,因为公钥是暴露出来的,当公钥被中间人非法截获时,同时将公钥替换成中间人自己的公钥发送给客户端,从而得到对称加密的秘钥,进而伪装与客户端通信。

    为了解决这种问题,就引入了数字证书与数字签名

    所以在第2步骤时,服务器发送了一个SSL证书给客户端,SSL证书中包含了具体的内容有证书的颁发机构、有效期、公钥、证书持有者、签名,通过第三方的校验保证身份的合法。

    一、首先客户端会读取证书所有者、有效期等信息进行校验。

    二、客户端(浏览器)开始查找操作系统中已内置的受信任的证书发布机构CA,与服务器发过来的证书的颁发CA比对,用于验证证书是否为合法机构颁发。

    三、如果找不到,浏览器就会报错。

    四、如果找到了,就会取出其中的公钥,对证书内的签名进行解密。

    五、使用相同的Hash算法对签名进行去摘要并与服务器发来的摘要进行对比。

    六、如果对比一致,则合法,这样就得到公钥了

    大量面试经验以及学习资料书籍请关注微信公众号:AVAJ

    回复"offer"进行获取

    365篇大厂java面经 你想要的我这里都有

  • 相关阅读:
    P1144 最短路计数 题解 最短路应用题
    C++高精度加减乘除模板
    HDU3746 Teacher YYF 题解 KMP算法
    POJ3080 Blue Jeans 题解 KMP算法
    POJ2185 Milking Grid 题解 KMP算法
    POJ2752 Seek the Name, Seek the Fame 题解 KMP算法
    POJ2406 Power Strings 题解 KMP算法
    HDU2087 剪花布条 题解 KMP算法
    eclipse创建maven项目(详细)
    maven的作用及优势
  • 原文地址:https://www.cnblogs.com/DoubleP/p/11369896.html
Copyright © 2011-2022 走看看