HTTP——学习笔记(6)https
HTTP+加密+认证+完整性保护=HTTPS
HTTP是一种新协议吗?:
不是,HTTPS只是HTTP通信接口部分用SSL和TLS协议代替而已
HTTP中,身处应用层的HTTP直接和TCP通信。而在使用了SSL时,则变成HTTP先和SSL通信,再由SSL和TCP通信,在采用了SSL之后,HTTP就拥有了HTTPS的加密,证书和完整性保护这些功能
只有在HTTP协议中才可以使用SSL协议吗?:
SSL是独立于HTTP的协议,不光是HTTP协议,其他运行在应用层的SMTP和Telnet等协议均可配合SSL协议使用。
SSL的具体加密方法?:
SSL采用一种叫做公开密钥加密的加密处理方式
这里说一下近代的加密方式,加密算法公开,而密钥保密。
共享密钥加密(对称密钥加密):发送端需要把密钥发送给接收端,这里就存在安全性问题,密钥的发送也需要安全保密,不然被窃取到了,窃听者既有了公开的加密算法,又有了密钥,破解密钥轻而易举,那么我们就需要把密钥安全的发送到接收端,但是我们如果可以把密钥安全的发送给接收端,那我们就可以安全地把数据发送过去,那还要密钥干什么呢?所以现在采用的加密方式摒弃了之前的,公开加密算法,保护密钥的方式。
公开密钥加密(非对称密钥加密):使用两把密钥,一把叫做私有密钥,另一把叫做公开密钥,私有密钥不能让其他任何人知道,而公开密钥则可以随意发布,任何人都可以获得。发送密文的一方使用对方的公开密钥进行加密处理,对方收到被加密的信息后,再使用自己的私有密钥进行解密。
优缺点:公开密钥加密明显安全性要更高一些,但是公开密钥加密的处理速度要比共享密钥加密慢。
HTTPS采用的加密方式?:
HTTPS采用共享密钥加密和公开密钥加密两者并用的混合加密机制。若密钥能够实现安全交换,那么有可能会考虑仅使用公开密钥加密来通信。
在交换密钥环节使用公开密钥加密方式,之后的建立通信交换报文阶段则使用共享密钥加密方式
公开密钥的安全性似乎是完美的,是这样吗?:
不是,公开密钥加密方式还是存在一些问题。那就是无法证明公开密钥本身就是货真价实的公开密钥。比如,正准备和某台服务器建立公开密钥加密方式下的通信时,如何证明收到的公开密钥就是原本预想的那台服务器发行的公开密钥。或许在公开密钥传输途中,真正的公开密钥已经被攻击者替换掉了。
但是这种不完美是由解决办法的,可以使用由数字证书认证机构(CA)和其相关机关颁发的公开密钥证书。数字证书的业务流程是这样的:
首先,服务器的运营人员向数字证书认证机构提出公开密钥的申请。数字证书认证机构在判明提出申请者的身份之后,会对已申请的公开密钥做数字签名,然后分配这个已签名的公开密钥,并将该公开密钥放入公钥证书后绑定在一起。
服务器会将这份由数字证书认证机构颁发的公钥证书发送给客户端,以进行公开密钥加密方式通信。公钥证书也可叫做数字证书或直接称为证书。
接到证书的客户端可以使用数字证书认证机构的公开密钥,对那张证书上的数字签名进行验证,一旦验证通过,客户端便可明确两件事:一,认证服务器的公开密钥的是真实有效的数字证书认证机构。二,服务器的公开密钥是值得信赖的。
此处认证机关的公开密钥必须安全地转交给客户端。使用通信方式时,如何安全转交是一件很困难的事,因此,多数浏览器开发商发布版本时,会事先在内部植入常用认证机关的公开密钥。
SSL慢吗?:
由于HTTPS还需要做服务器,客户端,双方加密及解密处理,因此会消耗CPU和内存等硬件资源,SSL通信部分消耗网络资源。而SSL通信部分又因为要对通信进行处理,所以时间上又延长了。
HTTPS比HTTP要慢2到100倍,目前并没有根本解决这一问题的方案,可以使用SSL加速器这种(专用服务器)硬件来改善该问题。该硬件为SSL通信专用硬件,相对软件来讲,能够提高数倍SSL的计算速度。仅在SSL处理时发挥SSL加速器的功效,以分担负载。
为什么所有的WEB网站不一直使用HTTPS?:
如上一条所说,如果所有网站都使用HTTPS,则请求处理速度会十分十分十分慢,并且购买证书也需要钱,所以不包含个人信息的网站没有必要使用HTTPS
HTTP——学习笔记(6)https的更多相关文章
- HTTPS学习笔记一----HTTPS的基础理论知识
首先推荐一本书,<HTTP权威指南>我就是看这本书入门的,对http协议有了更好的理解,学习https的理论知识我认为需要了解以下几点,需要一步步的深入学习: 1.HTTPS的基本概念? ...
- mongoDB 学习笔记纯干货(mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)
最后更新时间:2017-07-13 11:10:49 原始文章链接:http://www.lovebxm.com/2017/07/13/mongodb_primer/ MongoDB - 简介 官网: ...
- C++学习笔记(一):C++基础知识
一.C++基础知识 新的数据类型 C语言中的数据类型 C++中新的数据类型 思考:新的数据类型有什么好处?请看下面的代码: 可以见得:新的类型使整个程序更加简洁,程序变得易读易懂!这个就是bool类型 ...
- Go学习笔记(只有链接)
Go学习笔记 link: https://blog.csdn.net/u011304970/article/details/69908641 仅作为记录使用.
- blfs(systemd版本)学习笔记-总页
我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! lfs(systemd版本)学习笔记:https://www.cnblogs.com/renren-study-notes/p/ ...
- blfs(systemv版本)学习笔记-总页
我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! lfs(systemv版本)学习笔记:https://www.cnblogs.com/renren-study-notes/p/ ...
- NodeJS学习笔记 (17)集群-cluster(ok)
cluster模块概览 node实例是单线程作业的.在服务端编程中,通常会创建多个node实例来处理客户端的请求,以此提升系统的吞吐率.对这样多个node实例,我们称之为cluster(集群). 借助 ...
- 类型和变量(C#学习笔记02)
类型和变量 [C#类型和变量(原文参考官方教程)]https://docs.microsoft.com/zh-cn/dotnet/csharp/tour-of-csharp/types-and-var ...
- puppeteer学习笔记合集
官方英文版API入口(如果你英文好的话):https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md. 汉化版API入口(网上有 ...
- 转)delphi chrome cef3 控件学习笔记 (二)
(转)delphi chrome cef3 控件学习笔记 (二) https://blog.csdn.net/risesoft2012/article/details/51260832 原创 2016 ...
随机推荐
- linux 源码包安装拾遗
源码包安装和apt-get/yum的区别 安装前的区别:概念上的区别 rpm和dpkg包是经过编译过的包,并且其安装位置由厂商说了算,厂商觉得安装在哪里合适,就会装在哪里,而源码包则是没有经过编译的文 ...
- 全面的framebuffer详解
一.FrameBuffer的原理 FrameBuffer 是出现在 2.2.xx 内核当中的一种驱动程序接口. Linux是工作在保护模式下,所以用户态进程是无法象DOS那样使用显卡BIO ...
- 2、Koa2 路由+cookie
一.koa2 原生路由的实现 const Koa = require('koa'); const app = new Koa(); const fs = require('fs'); function ...
- IOS系统兼容input keyup事件
最近在做移动端模糊搜索功能,js监听input的keyup事件,在chrom模拟器和android手机环境运行都没有问题,到了ios手机却出现bug,没法实现功能: 查了好一会资料,发现keyup事件 ...
- 【【henuacm2016级暑期训练】动态规划专题 M】Little Pony and Harmony Chest
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 每一位显然只要取1..60这些数字. 然后需要保证每个这些数字里面,每个数字所用到的质因子都它所唯一拥有的.别人不能用 因为如果别人 ...
- NYIST 1030 Yougth's Game[Ⅲ]
Yougth's Game[Ⅲ]时间限制:3000 ms | 内存限制:65535 KB难度:4 描述有一个长度为n的整数序列,A和B轮流取数,A先取,每次可以从左端或者右端取一个数,所有数都被取完时 ...
- 数据库-mongodb-聚合与map reduce
分组统计:group() 简单聚合:aggregate() 强大统计:mapReduce() Group函数: 1.不支持集群.分片,无法分布式计算 2.需要手写聚合函数的业务逻辑 curr指当前行, ...
- Sybase数据库工具DbVisualizer乱码问题
使用DbVisualizer来操作sybase数据库的时候,会出现乱码问题,中文变成 '口口'. 解决的方法例如以下: 将这三个字体都改成 "宋体" 或者改成 "PM ...
- Android recycleView的研究和探讨
RecyclerViewLibrary A RecyclerView libirary ,has some support, like headerAdapter/TreeAdapter,and Pu ...
- CoreData 从入门到精通(六)模型版本和数据迁移
前面几篇文章中讲的所有内容,都是在同一个模型版本上进行操作的.但在真实开发中,基本上不会一直停留在一个版本上,因为需求是不断变化的,说不定什么时候就需要往模型里添加新的字段,添加新的模型,甚至是大规模 ...