zoukankan      html  css  js  c++  java
  • HTTPS与SSL

    ------------------------------------------------------------------------------------------------------

    HTTPS  就是 HTTP协议+SSL协议;其中 SSL协议 位于HTTP与TCP/IP之间;

    SSL协议的功能:① 确认服务器和客户端的身份(证书及握手协议)     ② 对数据进行加密(对称加密)   ③ 确保数据的完整性(HASH签名验证)

    首先说一下SSL证书:

      SSL证书是由CA机构颁发的,部署SSL证书的服务器都是经过CA认证的 安全的;

      SSL证书内容:

            版本号(不同版本 证书格式不一样)

            序列号(同一个CA机构颁发的证书 序列号彼此不可能相同,即每个证书的序列号唯一)

            签名算法(不对称加密算法 RSA、DSA、DSS等  公钥加密,私钥解密)

            有效期(其实日期  结束日期)

            证书持有人信息

            持有人公钥(注意 这里是公钥  而且,仅有公钥)

            机构对证书的签名(不太懂)

      SSL证书 部署方式:不同的服务器(J2EE   Apache   iis),部署方式不同,J2EE的亲自部署了一下,没什么难度!后面也许会写到怎么在tomcat上部署SSL证书;

    SSL的协议组成:

      SSL协议又可以细分为三个协议:握手协议   记录协议  警告协议

      握手协议的作用就是确认服务器的正确性,是不是要访问的服务器,协商加密算法。

      记录协议的作用就是对传输的数据进行压缩、封装、加密。

      警告协议的作用就是发出异常是产生警告

    SSL的工作流程:

      1、握手       握手的作用是查看服务器的合法性,主要包括:证书是否过期、公钥是否能够解开签名、证书域名与浏览器域名是否匹配等

      首先由客户端发送一个消息(称为hello),里面包含着很多信息。协议版本号、支持的加密算法种类、用作产生密钥的随机数等等。

      

       

      服务器会回一个包,包含了在支持的加密算法中选取的用于加密应用数据的算法、以及SSL证书的信息(证书信息可以在IE浏览器 点击“锁”图标看到)

      

      浏览器对返回的证书上的信息进行验证,以便确认服务器是否合法;验证完成后,产生一个随机密码串,使用证书中的公钥对密码串进行加密,然后回包。这是交换密钥的过程!(然而这块的报文并没有看懂)

      这时候,服务器可以用自己的私钥对客户发来的包进行解密(不对称加密),得到密码串的明文。如果服务器不需要对你客户端进行验证,那么握手协议到此结束。之后传输的应用数据都会用这个密码串进行加密(对称加密)。

      如果服务器需要对客户端进行验证,那么此时在客户端也会有一个证书;客户端需要将自己的证书 还有 产生的一个随机串一起加密,给服务器端;服务器端进行验证。通过后,可能经过其他的一系列东东,再产生一个密码串,用这个密码串对应用数据进行加密!

      OK,下面总结一下:握手过程主要是完成 认证、协商算法、产生密钥这三件事,使用的是不对称加密;

                应用数据的传输使用的是对称加密 密钥就是握手中产生的密钥;

                HASH加密可能主要是为了保证信息的完整性。

    浏览器如何验证证书的有效性:

      浏览器会在证书中找到CA机构的IP或者是域名,然后去CA机构对证书进行验证。

    同一站点同时使用HTTP与HTTPS:

      HTTPS非对称加密非常耗CPU,所以一般只对敏感的网页信息使用HTTPS。

  • 相关阅读:
    OpenCV鼠标事件
    相对复杂一些的爬虫,针对拒绝爬虫的网站
    CSS
    JS
    JS
    JS
    JS
    TypeScript
    微信小程序
    微信小程序
  • 原文地址:https://www.cnblogs.com/tengpan-cn/p/4777369.html
Copyright © 2011-2022 走看看