zoukankan      html  css  js  c++  java
  • https原理

    https协议原理

    http问题

    1)明文传输数据,被抓包后很容易可以看出传输内容,传输敏感数据有安全问题。

    2)不能保证进行http通信的客户端与服务器是合法的。

    为了解决这两个问题,需要对http数据进行加密和对通信双方进行认证。https就是在http协议的下层加了一个ssl协议,通过ssl实现了上述加密和认证的功能。

    https协议原理

    通常,http直接和tcp通信。而https协议,则是http和ssl通信,ssl和tcp通信,加解密的功能在ssl层实现。ssl是独立于http的协议,也可以用于应用层的smtp、telnet等协议。

    要了解ssl原理,先要理解公钥加密和对称加密。公钥加密的优点是传输秘钥方便,除了加密还可以做认证,缺点是运行比对称加密慢很多。对称加密缺点是不方便传输秘钥,优点是加密速度快。ssl结合了公钥加密和对称加密的优点,使用公钥加密传输对称加密的秘钥。

    实际运行中,服务器将通信用的对称秘钥用自身私钥加密后传输给客户端,然后双方通信时使用此对称秘钥对数据进行加解密。

    客户端如何确保公钥来自服务器?

    通过数字认证机构颁发的数字证书,以及客户端内部嵌入的数字认证机构公钥集合。具体流程如下:

    1)服务器运营人员向数字认证机构申请证书,申请证书时填入服务器公钥,数字认证机构用自身私钥加密服务器公钥生成一个数字证书(包含认证机构ID、加密后的服务器公钥和公钥明文),然后运营人员把证书放在服务器上。

    2)客户端请求时,服务端把自身证书和公钥下发给服务端,客户端通过证书中的数字认证机构ID查询内部嵌入的公钥列表,得到认证机构的公钥,并使用此公钥解密得到服务端公钥,然后验证公钥如果一致,则同时验证了认证结构与服务器的合法性。 

    https的优缺点

    https可以很大程度提高安全性,google、百度等许多大网站全站都实现了https。

    但使用https时处理速度变慢,一种是多了一层,通信量增加,通信变慢,一种是加解密需要消耗cpu、内存等资源,处理时间增加,负载增加。和使用http相比,可能会变慢2~100倍(数据来自《图解HTTP》)。

    所以只有在需要隐藏信息时才使用https,可以节省资源。

    PS:客户端证书与服务端证书原理是一样的,常见的客户端证书比如网银U盾,证书是由银行颁发的,用于在服务器端认证客户。

  • 相关阅读:
    IOS无线客户端自动化测试
    junit 测试报错 java.lang.Exception: No runnable methods
    mysql varchar(128)可以存多少汉字
    求两个数的百分比
    日期转换
    两个 integer 值判断是否相等
    整洁代码之道——重构
    Eclipse里项目名有红叉,但是底下的每一个文件都没有红叉
    #dubbo# XML文件报错dubbo:XX解决方法
    String处理入门
  • 原文地址:https://www.cnblogs.com/livepeace/p/8126076.html
Copyright © 2011-2022 走看看