最近二狗子宅在老家,最悠闲的就是泡壶茶看着院子的风景发呆一下午。今天,二狗子看到了对面自己暗恋的小翠花,看着美好的小翠花二狗子不禁想起了自己美好的初恋。

二狗子的初恋在初中,那个时候学校禁止带手机。上课交流靠三宝,脚踢屁股、笔戳后背和传纸条。最危险的就是传纸条,尤其是早恋,被老师抓到就是一首《凉凉》,然后叫家长,又是一首《爸爸妈妈的爱》。

二狗子很聪明,就跟初恋商量了一下,加密一下小纸条上面的内容,这样就算被班主任抓到也奈何不了。二狗子将英文字母和数字一一对应,组成一个密码本,这样小纸条上只写数字,收到后要将数字翻译成对应字母,再拼成拼音才能解密。

密码本成就了二狗子美好的初恋,后来二狗子长大了,成了一名程序员,他才发现,网络数据传输中的 HTTPS 其实也是类似的原理。

HTTPS的加密算法

聊 HTTPS 之前,我们先来看下 HTTP 协议,HTTP 协议(HyperText Transfer Protocol),即超文本传输协议,是客户端浏览器或其他程序与 Web 服务器之间的应用层通信协议 。

HTTPS,则是 HTTP over SSL,即 HTTP+SSL/TLS,可以理解为 HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL,用于安全的 HTTP 数据传输。

上文中提到的传小纸条,其实也算是一种加密算法,而在 HTTPS 中应用的加密算法主要有以下几种:

1、对称加密

有流式、分组两种,加密和解密都是使用的同一个密钥。

例如:DES、AES-GCM、ChaCha20-Poly1305 等

2、非对称加密

加密使用的密钥和解密使用的密钥是不相同的,分别称为:公钥、私钥,公钥和算法都是公开的,私钥是保密的。非对称加密算法性能较低,但是安全性超强,由于其加密特性,非对称加密算法能加密的数据长度也是有限的。

例如:RSA、DSA、ECDSA、 DH、ECDHE

3、哈希算法

将任意长度的信息转换为较短的固定长度的值,通常其长度要比信息小得多,且算法不可逆。

例如:MD5、SHA-1、SHA-2、SHA-256 等

4、数字签名

签名就是在信息的后面再加上一段内容(信息经过 hash 后的值),可以证明信息没有被修改过。hash 值一般都会加密后(也就是签名)再和信息一起发送,以保证这个hash值不被修改。

HTTPS 为什么安全

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

图中可以看到,客户端发出的请求很容易被黑客截获,如果此时黑客冒充服务器,则其可返回任意信息给客户端,而不被客户端察觉,所以我们经常会听到一词“劫持”。

上图是 HTTPS 握手流程,可以看到相比 HTTP,HTTPS 传输更加安全。

  • 所有信息都是加密传播,黑客无法窃听。

  • 具有校验机制,一旦被篡改,通信双方会立刻发现。

  • 配备身份证书,防止身份被冒充。

而 HTTPS 一整套的加解密和校验方案,主要从下面三个方面确保传输的安全。

1. 身份认证

传输之前首先通过数字证书来确认身份,各大 CA 厂商干的就是这个事情。这里涉及到一个名词:数字证书。数字证书分为公钥和私钥,CA 厂商会用自己的私钥来给证书申请者签发一套包含私钥和公钥的客户证书,客户的公钥证书谁都可以获取,里面包含了客户站点和证书的基本信息,用来确保访问者访问的就是他想要访问的站点。

这个证书不可以伪造吗?答案是真的不可以。

原因一:系统早已内置了各大 CA 厂商的公钥来校验证书是否是对应的站点的证书,如果不是,就会给出证书不匹配的提示,除非你给别人的设备强行植入假的 CA 公钥。

原因二:这个证书是 CA 厂商通过哈希并加密得到的,基本无法逆向破解并伪造一个新的,除非是你黑进 CA 获取了 CA 的私钥,那这家 CA 也基本可以倒闭了。

2. 数据保密

数据保密包括会话秘钥传输时候的保密和数据的加密传送。具体的加密方式就不再赘述了。

3. 数据完整

身份认证成功后,到了数据加密传输的阶段,所有数据都以明文(HTTP)收发,只不过收发的是加密后的明文。这时候也遇到了一个问题,虽然中间人很难破解加密后的数据,但是如果他对数据进行了篡改,那该怎么办?此时加密套件验证数据一致性的哈希算法就派上用场了,哈希算法有多种,比如 MD5 ,SHA1 或者 SHA2 等,上面举例的加密套件使用的是 SHA2 中的 SHA256 来对数据进行哈希计算。这样就使得任何的数据更改都会导致通信双方在校验时发现问题,进而发出警报并采取相应的措施。

如何将 HTTP 升级为 HTTPS?

部署 HTTPS 需要以下三个必要条件或步骤:

  • 申请 SSL 证书,你可以选择收费或者免费的的 SSL 证书,不同类型的 SSL 证书安全程度不尽相同。

  • 部署 SSL 证书,又拍云提供一键部署,平台全局自动化管理,采用了最优质的 HTTPS 加速解决方案,可帮助用户以最低的成本,享受最优的服务,完成网站 HTTP 到 HTTPS 的转换。

  • 将网站所有 HTTP 链接更换为 HTTPS。

又拍云是众多云厂商中唯一一家提供两款免费的 SSL 证书的云厂商,同时也提供各种付费证书的购买。最近全新上线了 GlobalSign SSL 证书,GlobalSign 成立于 1996 年,是一家声誉卓著,备受信赖的 CA 中心和 SSL 数字证书提供商,在全球总计颁发超过 2000 万张数字证书。偷偷的告诉你,最近 GlobalSign SSL 证书全新上线,有非常大的促销力度哦~

推荐阅读

凡人自保指南:武汉肺炎的个人防护、装备选择与使用建议

为什么 HTTPS 比 HTTP 安全

二狗子 、初恋及HTTPS的更多相关文章

  1. 夜空中最靓的二狗子是如何让 HTTPS 快上加快的?

    二狗子是某不知名网站的站长,他热衷于通过博客分享日常的一些工作.生活.技术等,立志要成为夜空中最靓的仔. 但是前段时间有几个用户反馈,网站总是莫名会跳转到一个 xx 网站,除此之外访问速度也有点慢.作 ...

  2. 受到 1 万点暴击,二狗子被 DDoS 攻击的惨痛经历

    二狗子的遭遇 “好消息,好消息,免费 DDoS 攻击软件上线了,性感黑客在线攻击,帮您攻克所有商业难题.”二狗子不知道在看着什么网站,新买的 Mac 中发出热闹的声音. 二狗子想知道“DDoS 是什么 ...

  3. 第一次亲密接触——二狗子初识 CDN

    二狗子是国内知名XXX大学的在校学生,作为一名编程爱好者,他利用业余时间搭建了一个网站,把平时的学习心得和技术分享全都 PO 在自己的网站上.渐渐地,二狗子的网站因为文章质量高,技术分享全面,受到了很 ...

  4. 【MySQL】记一次线上重大事故:二狗子竟然把线上数据库删了!!

    写在前面 估计二狗子这几天是大姨夫来了,心情很郁闷,情绪也很低落,工作的时候也有点心不在焉.让他发个版本,结果,一行命令下去把线上的数据库删了!你没听错:是删掉了线上的数据库!运营那边顿时炸了锅:怎么 ...

  5. 【Spring注解驱动开发】二狗子让我给他讲讲@EnableAspectJAutoProxy注解

    写在前面 最近,二狗子入职了新公司,新入职的那几天确实有点飘.不过慢慢的,他发现他身边的人各个身怀绝技啊,有Spring源码的贡献者,有Dubbo源码的贡献者,有MyBatis源码的贡献者,还有研究A ...

  6. iOS10 导航条,这个二狗子变了...踩坑

    1.iOS10导航透明要转换一个透明image UIImage *image = IsDeviceVersionIOS10 ? [WeUtils imageWithColor:[UIColor cle ...

  7. 超详细的编码实战,让你的springboot应用识别图片中的行人、汽车、狗子、喵星人(JavaCV+YOLO4)

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  8. 【摸鱼神器】UI库秒变低代码工具——表单篇(二)子控件

    上一篇介绍了表单控件,这一篇介绍一下表单里面的各种子控件的封装方式. 主要内容 需求分析 子控件的分类 子控件属性的分类 定义 interface. 定义子控件的的 props. 定义 json 文件 ...

  9. MPTCP 源码分析(二) 建立子路径

    简述      MPTCP在进行三次握手之后,客户端和服务端会进行地址信息的交换,让对方知道彼此未用的地址信息. 当客户端知道服务端的地址后就可以建立其他子路径.三次握手和建立子路径的过程如图1:   ...

随机推荐

  1. 理解TCP/IP协议栈之HTTP2.0

    1 前言 前面写了10多篇关于Redis底层实现.工程架构.实际应用的文章,感兴趣的读者可以进行阅读,如有问题欢迎交流: 1.Redis面试热点之底层实现篇-12.Redis面试热点之底层实现篇-23 ...

  2. Java 基础(二)| 使用 lambad 表达式的正确姿势

    前言 为跳槽面试做准备,今天开始进入 Java 基础的复习.希望基础不好的同学看完这篇文章,能掌握 lambda 表达式,而基础好的同学权当复习,希望看完这篇文章能够起一点你的青涩记忆. 一.什么是 ...

  3. vue基础中的注意事项,以及一些学习心得

    vue中你不知道的东西.以及注意事项 v-html 使用 v-html的时候该指令中的值会覆盖绑定标签中原有的值,且使用v-html的时候不要将他设置为给用户提供内容的地方,因为v-html很容易被X ...

  4. HTTP图解笔记(一)—— 第1章 了解Web及网络基础

    TCP/IP协议族 网络是在TCP/IP协议族的基础上运作的,HTTP是一个子集 OSI四层: 应用层:通用的应用服务协议,FTP.DNS.HTTP ↓ 传输层:提供计算机之间的数据传输,TCP.UD ...

  5. windows环境下使用python3.x自带的CGI服务器测试cgi脚本(转)

    1.在桌面上新建一个文件夹作为服务器目录文件夹(文件夹名称自定义,文件夹位置自定义),在www文件下再建一个文件夹,文件夹名为“cgi-bin”,须是这个文件名,其他试过不行(原因暂时未知)

  6. .net core 3.1 DbFirst mysql

    这是一套完全配置正确的方式 创建项目此步骤省略 打开nuget 搜索 Pomelo.EntityFrameworkCore.MySql 添加完毕该引用之后nuget 搜索 Microsoft.Enti ...

  7. 美食家App开发日记5

    今天将ListView控件用更强大的Recyclerview控件取代,最后调试了程序. 感觉Android编程难度实在是远远高于javaweb,初次接触,感觉有很多东西想实现,想得很容易,但是实现起来 ...

  8. Node.js实操练习(一)之Node.js+MySQL+RESTful

    前言 最近学习了一下node.js相关的内容,在这里初步做个小总结,说实话关于本篇博客的相关内容,自己很久之前就已经有过学习,但是你懂的,“好记性不如烂笔筒”,学过的东西不做笔记的话,很容易就会忘记的 ...

  9. 使用整体模型模板辅助器 Using Whole-Model Templated Helpers 模板辅助器方法 精通ASP.NET MVC 5

    怎么会

  10. Spring-事务(1)

    一,注解的方式实现事务 1.Dao层 package com.atguigu.spring.tx; public interface BookShopDao { //根据书号获取书的单价 public ...