HTTPS原理 

在谈HTTPS原理之前,首先了解一下Http和Https的区别。 
    Http(全称:Hyper Text Transfer Protocol),一般称为超文本传输协议,也是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。 
    Https(全称:Hyper Text Transfer Protocol over Secure Socket Layer),可以理解为Http+SSL/TLS,即Http下加入了SSL层,Https的安全基础是SSL,是以安全为目标的Http通道,简单讲Https是Http的安全版。

如上图所示,Https比Http多了一层SSL/TLS.

为了增加大家对SSL/TLS的理解,我在此简述一下两者概念。

 SSL(全称:Secure Socket Layer,安全套接字层),位于可靠地面向连接的网络层协议和应用层协议之间的一种协议层。SSL通过互相认证,使用数字签名确保完整性,使用加密确保私密性,以实现客户端和服务器端之间的安全通讯。该协议由两层组成:SSL记录协议和SSL握手协议。

TLS(全称:Transport Layer Security,传输才能够安全协议),用于两个应用程序之间提供保密性和数据完整性。协议由两层组成:TLS记录协议和TLS握手协议。

详解

一.Http访问过程

如上图所示,Http请求过程中,客户端与服务器端之间没有任何身份确认的过程,数据全部明文传输,“裸奔”在互联网上,所以很容易遭到黑客的攻击,如下:

可以看到客户端发送的请求很容易被黑客截获,如果此时黑客冒充服务器,则其可返回任意信息给客户端,而不被客户端察觉。

所以Http传输面临的风险有:

  • 窃听风险:黑客可以获知通信内容。

  • 篡改风险:黑客可以修改通信信息。

  • 冒充风险:黑客可以冒充他人身份参与通信。

二.Http向Https演化的过程

1.为了防止上述现象的发生,可以采用对传输的消息加密(即使黑客截获,也无法破解)

注:对称加密:一个密钥,文件加密和解密使用相同的密钥。

      非对称加密:两个密钥,公开密钥和私有密钥,用公开密钥对数据进行加密,只有私钥才能解密。

如上图所示,在第2步时服务器发送了一个SSL证书给客户端,SSL证书中包含的具体内容有:

  • 证书的发布机构CA

  • 证书的有效期

  • 公钥

  • 证书所有者

  • 签名

在第3步时客户端采用公钥加密方式发送给服务器端一段话说之后的会话用对称加密,对称加密算法和对称密钥。

在第4步服务器接收到消息后,用私钥解密,提取出对称加密算法和对称密钥后,采用对称私钥加密回客户端说好的。

后续两者之间信息的传输就可以使用对称加密的方式了。

Https的优缺点

优点

在目前的技术背景下,Https是现行架构下最安全的解决方案,主要有以下好处:

1.使用Https协议可认证用户和服务器,确保数据发送到正确的客户端和服务端。

2.Https协议由SSL+Https协议构建的可进行加密传输,身份认证的网络协议,要比Http协议安全,可防止数据在传输过程中不被窃取,改变,确保数据的完整性。

3.Https是现行架构下最安全的解决方案,虽然不是绝对安全,但大幅度增加了中间人攻击的成本。

缺点

1.相通网络下,Https协议会使页面的加载时间延长近50%,增加10%到20%的耗电,此外,Https协议还影响缓存,增加数据开销和功耗。

2.Https协议的安全是有范围的,在黑客攻击,拒绝服务攻击,服务器劫持等方面几乎起不到什么作用。

3.最关键,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA证书的情况下,中间人攻击一样可行。

4.而且SSL证书需要购买,功能越强大的证书费用越高,个人网站,小网站可以选择入门级免费证书。

5.SSL证书通常需要绑定固定IP,为服务器增加IP会增加一定费用。

6.Https连接服务器资源占用高,相同负载下会增加带宽和服务器投入成本。

总结

  既然Https有这么多缺点,那是不是就不该做呢,当然不是,随着技术的发展很多缺点是可以优化和弥补的。

打开速度问题完全可以通过CDN加速解决,很多IDC也在着手推出免费证书和一站式Https搭建服务,Https成本在未来将会大大

http https 干货的更多相关文章

  1. 了解 HTTPS,读这篇文章就够了

    今天接到个活儿,让我科普 HTTPS .讲 HTTP 我都“方”,想要通俗易懂的说完 HTTPS, 我有点“圆”.在讲什么是 HTTPS 之前,我们先来看个漫画.   △ 图片来源于阮一峰的网络日志 ...

  2. 如何走上更高平台分享传递干货知识:(开通个人Github面向开源及私有软件项目的托管平台:https://github.com/zlslch/)(图文详解)(博主推荐)

    不多说,直接上干货! https://github.com/ 欢迎大家,加入我的微信公众号:大数据躺过的坑        人工智能躺过的坑       同时,大家可以关注我的个人博客:    http ...

  3. [转帖]HTTPS系列干货(一):HTTPS 原理详解

    HTTPS系列干货(一):HTTPS 原理详解 https://tech.upyun.com/article/192/HTTPS%E7%B3%BB%E5%88%97%E5%B9%B2%E8%B4%A7 ...

  4. 【转】HTTPS系列干货(一):HTTPS 原理详解

    HTTPS系列干货(一):HTTPS 原理详解 前言 HTTPS(全称:HyperText Transfer Protocol over Secure Socket Layer),其实 HTTPS 并 ...

  5. 避免重复提交?分布式服务的幂等性设计! 架构文摘 今天 点击蓝色“架构文摘”关注我哟 加个“星标”,每天上午 09:25,干货推送! 来源:https://www.cnblogs.com/QG-whz/p/10372458.html 作者:melonstreet

    避免重复提交?分布式服务的幂等性设计! 架构文摘  今天 点击蓝色"架构文摘"关注我哟    加个"星标",每天上午 09:25,干货推送!      来源:h ...

  6. 【腾许Bugly干货分享】“HTTPS”安全在哪里?

    背景 最近基于兴趣学学习了下 HTTPS 相关的知识,在此记录下学习心得. 在上网获取信息的过程中,我们接触最多的信息加密传输方式也莫过于 HTTPS 了.每当访问一个站点,浏览器的地址栏中出现绿色图 ...

  7. 【腾讯Bugly干货分享】iOS 中 HTTPS 证书验证浅析

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/-fLLTtip509K6pNOTkflPQ 导语 本 ...

  8. HTTPS系列干货(一):HTTPS 原理详解

    HTTPS(全称:HyperText Transfer Protocol over Secure Socket Layer),其实 HTTPS 并不是一个新鲜协议,Google 很早就开始启用了,初衷 ...

  9. 干货,不小心执行了rm -f,除了跑路,如何恢复?https://www.cnblogs.com/justmine/p/10359186.html

    前言 每当我们在生产环境服务器上执行rm命令时,总是提心吊胆的,因为一不小心执行了误删,然后就要准备跑路了,毕竟人不是机器,更何况机器也有bug,呵呵. 那么如果真的删除了不该删除的文件,比如数据库. ...

随机推荐

  1. day1-3js代码执行特性

    Js代码执行特性 js中变量声明都会提升到脚本的第一行(注意不是定义,只是声明) 函数变量声明也会提升到前面(是整个函数!)(变量最前,函数其后) 注:在执行js代码前,先把所有变量声明,函数提升至前 ...

  2. 【原】postman设置环境变量和全局变量

    一:设置环境变量 1. postman通过变换环境变量来快速变换环境地址. 2. 现可以将localhost:80信息添加至环境 3. 点击确定后,在首页可看到已添加的环境变量信息及设置的变量信息: ...

  3. 关于html的基本知识

    先上基本介绍图 HTML 简介 超文本标记语言 Hyper Text Markup Language 什么是标签(大多数标签) 尖括号包围.成对出现 开始标签,结束标签 元素 编辑器 HBuilder ...

  4. Linux centosVMware Nginx访问日志、Nginx日志切割、静态文件不记录日志和过期时间

    一.Nginx访问日志 vim /usr/local/nginx/conf/nginx.conf //搜索log_format  日至格式 改为davery格式 $remote_addr  客户端IP ...

  5. ES6 && ECMAScript2015 新特性

      ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015. 也就是说,ES6就是ES201 ...

  6. 图片切换.----so屌

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. uniGUI之新窗口uniForm(19)

    然后 保存,在这里 重命名窗口 //主窗口 调用 // NewForm2.UniForm1.Show() ; //非阻塞 NewForm2.UniForm1.ShowModal();//阻塞 //子窗 ...

  8. 设计模式课程 设计模式精讲 8-3 单例设计模式-DoubleCheck双重检查实战及原理解析

    1 课程讲解 1.1 为何要使用双重检查 1.2 双重检查的缺点 1.3 指令重排序讲解 1.4 指令重排序比喻(自己理解) 1.5 如何解决指令重排序问题 2 代码演练 2.1 代码演练1(双重检查 ...

  9. uniGUI 应用程序体系结构(11)

    下图表示 uniGUI 服务器的内部结构. 每个 uniGUI 服务器都有一个ServerModule的副本, 每台服务器创建一次, 同时根据用户活动动态创建和销毁多个Session. uniGUI ...

  10. 136、Java的内部类

    01.代码如下: package TIANPAN; class Outer { // 外部类 private String msg = "Hello World !"; class ...