HTTP和HTTPS的区别及联系

一. 基本概念

HTTP协议: 超文本协议, 被用于在Web浏览器和网站服务器之间传递信息, http协议以明文方式发送内容, 不提供任何方式的数据加密,如果攻击者截取了web浏览器和网站服务器之间的传输报文, 就可以直接读懂其中的信息, 因此http协议不适合传输一些敏感信息, 比如密码, 信用卡号, 支付信息等.
解决这个缺陷, 需要使用另一种协议: HTTPS安全套接字层超文本传输协议, 为了数据传输的安全, https在http的基础上加入了SSL协议, SSL依靠证书来验证服务器的身份, 并为浏览器和服务器之间的通信加密.

二. 区别

简单来说, https协议是由ssl + http协议构建的可进行加密传输, 身份认证的网络协议, 要比http协议安全.
主要区别:

  1. https协议需要到ca申请证书, 一般免费证书比较少, 所以需要花费一定的费用
  2. http是超文本传输协议, 信息是明文传输, https则是具有安全性的ssl加密传输协议
  3. http和https使用完全不同的连接方式, 用的端口也不一样, 前者是80, 后者是443
  4. http的连接很简单, 是无状态的, 而https协议是由ssl + http协议构建的可进行加密传输, 身份认证的网络协议, 比http协议安全

三. HTTPS工作原理

  1. 客户端发起https请求
    就是用户在浏览器中输入一个https网址, 然后连接到server的443端口
  2. 服务端的配置
    采用https协议的服务器必须要有一套数字证书, 可以自己制作, 也可以向组织申请, 区别就是自己颁发的证书需要客户端验证通过才可以继续访问, 而使用受信任的公司申请的证书则不会弹出提示页面(例如startssl有一年的免费服务)
    这套证书就是一对公钥和私钥, 把公钥和私钥想象成一把钥匙和锁头, 全世界只有你一个人有这把钥匙, 你可以把锁头给别人, 别人可以用这个锁把重要的东西锁起来, 然后发给你, 因为只有你一个人有这把钥匙, 所以只有你才能看到被这把锁锁起来的东西.
  3. 传送证书
    这个证书其实就是公钥, 只是包含了很多的信息, 如证书的颁发机构, 过期时间等
  4. 客户端解析证书
    这部分工作是由客户端的TLS(安全传输协议)完成的, 首先会验证公钥是否有效, 比如颁发机构, 过期时间等, 如果发现异常, 则会弹出一个警告框, 提示证书存在问题.
    如果证书没有问题, 那么就生成一个随机值, 然后用证书对该随机值进行加密, 就好像上面说的, 把随机值用锁头锁起来, 这样除非有钥匙, 否则看不到被锁住的内容.
  5. 传送加密信息
    传送的是用证书加密后的随机值, 目的就是让服务端得到这个随机值, 以后客户端和服务端的通信就可以通过这个随机值来进行加密解密.
  6. 服务端解密信息
    服务端用私钥解密后, 得到了客户端传过来的随机值, 然后把内容通过该值进行对称加密, 就是将信息和私钥通过某种算法混合在一起, 这样除非知道私钥, 不然无法获取内容, 而正好客户端和服务端都知道这个私钥, 所以只要加密算法够强, 私钥够复杂, 数据就够安全.
  7. 传输加密后的信息
    这部分信息是服务端用私钥加密后的信息, 可以在客户端被还原.
  8. 客户端解密信息
    客户端用之前生成的私钥解密服务端传过来的信息, 于是获取了解密后的内容, 整个过程第三方即使监听到了数据, 也束手无策.

四. HTTPS的优缺点

  1. 优点: 安全性

    (1) 使用https协议可认证用户和服务器, 确保数据发送到正确的客户机和服务器
    (2) https协议是由SSL + HTTP 协议构建的可进行加密传输, 身份认证的网络协议, 要比http协议安全, 可防止数据在传输过程中不被窃取, 改变, 确保数据的完整性.
    (3) https是现行构架下最安全的解决方案, 虽然不是最安全的, 但是增加了中间人攻击的成本

  2. 缺点

    (1) SSL证书需要钱, 功能越强大的证书费用越高
    (2) SSL证书通常需要绑定IP, 不能在同一IP上绑定多个域名, IPv4资源不可能支撑这个消耗
    (3) https连接缓存不如http高效
    (4) https连接服务器端资源占用高很多, 支持访客稍多的网站需要投入更大的成本
    (5) https协议握手阶段比较费时, 对网站的相应速度有负面影响

你可能感兴趣的:(网络)