你不知道的HTTP之HTTPS
确保web安全的HTTPS
HTTPS=HTTP+ 加密 + 认证 + 完整性保护
1、加密:
1)通信的加密
所谓互联网,是由能连通到全世界的网络组成的。无论世界哪个角 落的服务器在和客户端通信时,
在此通信线路上的某些网络设备、光 缆、计算机等都不可能是个人的私有物,所以在某个环节中都
有可能会遭到恶意窥视行为。窃听相同段上的通信并非难事。只需要收集在互联网上流动的数据 包帧)就行了。
对于收集来的数据包的解析工作,可交给那些抓包 (Packet Capture)或嗅探器(Sniffer)工具。
所以,这时就需要对同信的过程进行加密,加密的方式就是通过和SSL(Secure Socket Layer,安全套接层)
或 TLS(Transport Layer Security,安全层传输协议)的组合使用。
这样,就可以在这条较安全的通信线路上进行HTTP通信了。
2)内容的加密
通信的内容不经过任何处理的话,都将以明文的方式进行传输,这样便很容易被人窃取到传输的信息,所以需要对
参与通信的内容本身进行加密。由于 HTTP 协议中没有加密机制,那么就对 HTTP 协议传输的内容本身加密。
这样的方式要求客户端和服务器同时具备加密和解密机制。
2、认证
HTTP 协议中的请求和响应不会对通信方进行确认。也就是说存在“服务器是否就是
发送请求中 URI 真正指定的主机,返回的响应是否真的返回到实际提出请求的客户端”等类似问题。
那么如果不确认通信方,就会存在各种隐患,为了解决这一问题,我们使用证书这一方法来解决。
证书由值得信任的第三方机构颁发,用以证明服务器和客户端是实际存在的。
另外,伪造证书从技术角度来说是异常困难的一件事。所以 只要能够确认通信方
(服务器或客户端)持有的证书,即可判断通信方 的真实意图。通过使用证书,
以证明通信方就是意料中的服务器。这对使用者个 人来讲,也减少了个人信息泄露的危险性。
另外,客户端持有证书即可完成个人身份的确认,也可用于对 Web 网站的认证环节。
3、完整性
所谓完整性是指信息的准确度。若无法证明其完整性,通常也就意味着无法判断信息是否准确。
HTTP协议没有办法确认发出的请求 / 响应和接收到的请求 / 响应是前后相同的。像这样,请求或响应在传输途中,
遭攻击者拦截并篡改内容的攻击称为中间人攻击(Man-in-the-Middle attack,MITM)。
HTTP本身有为了防止篡改的方法,常用的是 MD5 和 SHA-1 等散列值校验的方法,以及用来确认文件的数字签名方法。
然而,用这些方法都无法百分百保证确认结果正确;仅靠 HTTP 确保完整性是非常困难的,因此需要通过和其他协议组合使用来实现这个目标。
HTTPS是通过什么方法来完成加密和认证的过程呢?
1、其实HTTPS不是应用层的一种新协议。只是 HTTP 通信的接口部分用 SSL(Secure Socket Layer)
和 TLS(Transport Layer Security)协议代替 而已。通常,HTTP 直接和 TCP 通信。当使用 SSL 时,
则演变成先和 SSL 通信,再由 SSL 和 TCP 通信了。简言之,所谓 HTTPS,其实就是身披 SSL 协议这
层外壳的 HTTP。所以,在采用 SSL 后,HTTP 就拥有了 HTTPS 的加密、证书和完整性保护这些功能。
所以,要想弄清楚加密和认证的过程,只需要知道SSL做了什么就行了。
1)公开密钥加密技术:SSL 采用一 种叫做公开密钥加密(Public-key cryptography)的加密处理方式。
- 首先,我们在加密和解密时都会用到密钥,过程中使用同一个密钥的方式称为共享密钥加密,
也叫做对称密钥加密。以共享密钥方式加密时必须将密钥也发给对方,所以,在将密钥发给对方的时候,
就有可能会被攻击者获取到,这样加密就失去了意义。
- 公开密钥加密的方式很好的解决了这一问题;我们使用两把密钥的公开密钥加密,公开密钥加密使
用一对非对称的密钥。一把叫做私有密钥(private key),另一把叫做公开密钥(public key)。私有密
钥不能让其他任何人知道,而公开密钥则可以随意发布,任何人都可以获得。使用公开密钥加密方式,发
送密文的一方使用对方的公开密钥进行加密处理,对方收到被加密的信息后,再使用自己的私有密钥进行
解密。利用这种方式,不需要发送用来解密的私有密钥,也不必担心密钥被攻击者窃听而盗走。
- HTTPS 采用共享密钥加密和公开密钥加密两者并用的混合加密机制。若密钥能够实现安全交换,
那么有可能会考虑仅使用共享密钥加密来通信。但是公开密钥加密与共享密钥加密相比,其处理速度要慢。
所以应充分利用两者各自的优势,将多种方法组合起来用于通信。 在交换密钥环节使用公开密钥加密方式,
之后的建立通信交换报文阶段则使用共享密钥加密方式。
- 遗憾的是,公开密钥加密方式存在无法证明公开密钥本身就是货真价实的公开密钥的问题。所以为了解决
这一问题,可以使用由数字证书认证机构(CA,Certificate Authority)和其相关机关颁发的公开密钥证书。数
字证书认证机构处于客户端与服务器双方都可信赖的第三方机构的立场上。认证流程如下:
1)服务器的 运营人员向数字证书认证机构提出公开密钥的申请;
2)数字证书认证机构判明提出申请者的身份之后,会对已申请的公开密钥做数字签名;
3)分配这个已签名的公开密钥,然后将该公开密钥放入公钥证书并绑定在一起;
4)服务器将这份由数字证书认证机构颁发的公钥证书发送给客户端,以进行公开密钥加密方式通信;
5)接到证书的客户端可使用数字证书认证机构的公开密钥,对那张证书上的数字签名进行验证;
以上便是HTTPS加密和认证的相关方法及过程。
你不知道的HTTP之HTTPS的更多相关文章
- java 与大数据学习较好的网站
C# C#中 Thread,Task,Async/Await,IAsyncResult 的那些事儿!https://www.cnblogs.com/doforfuture/p/6293926.html ...
- js script all in one
js script all in one 你不知道的 js secret https://html.spec.whatwg.org/multipage/scripting.html https://h ...
- 搞懂前端二进制系列(一):🍇 认识Blob对象
参考资料: https://juejin.cn/post/6844904183661854727 [你不知道的Blob] https://juejin.cn/post/6844904144453517 ...
- Web Worker: Shared Worker的使用
Web Worker: Shared Worker的使用 参考资料: JavaScript高级程序第四版 https://juejin.cn/post/7064486575916187656 http ...
- 你不知道的https工作原理
HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块.服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据 1. ...
- [javascript 实践篇]——那些你不知道的“奇淫巧技”
1. 空(null, undefined)验证 刚开始,我是比较蠢的验证(我还真是这样子验证的) if (variable1 !== null || variable1 !== undefined | ...
- 翻译连载 |《你不知道的JS》姊妹篇 |《JavaScript 轻量级函数式编程》- 引言&前言
原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 译者团队(排名不分先后):阿希.blueken.brucec ...
- 翻译连载 | 第 11 章:融会贯通 -《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇
原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...
- 翻译连载 | 附录 A:Transducing(上)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇
原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...
随机推荐
- php 有时候难以输出显示的信息可以用ob缓冲区来做
有时候一些难以打印的信息可以通过缓冲区来做,比如手机扫码上的信息看不到这种, 当然也可以通过fiddler来抓包,也可以看到这些信息,直接上代码: <?php ob_start(); //开启缓 ...
- Win 7下破解Loadrunner 11(带中文版下载地址)
空间管理您的位置: 51Testing软件测试网 » 测试是一种生活态度 » 日志 与您一起分享在测试过程中的快乐与辛酸... Win 7下破解Loadrunner 11(带中文版下载地址) 上一篇 ...
- Hearthstone
题意: 有$n$个无中生有,有$m$个不同的杀,第$i$个杀掉$X_i$滴血,敌人血量$P$,求问第一回合就将敌人杀死的概率是多少. 解法: 二进制枚举$A$类,$B$类卡的顺序,这样就确定了取了几个 ...
- awk用法总结
简介 awk的命名来自于他的三位创始人Alfred Aho .Peter Weinberger 和 Brian Kernighan 的姓氏的首字母. 有多种版本:New awk(nawk),GNU a ...
- Nginx的安装配置和tomcat负载均衡
Nginx简介 什么是nginx? Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器.由俄罗斯的程序设计师Igor Sysoev所开发,官方测试ngi ...
- 执行多个Sql脚本,Sqlplus
1.先制作需要执行的Sql文件list CMD 中输入[dir E:\FolderName >E:\ExcuteSqlList.txt ] 2.根据ExcuteSqlList.txt 中的文件名 ...
- JQuery学习笔记(三)遍历 DOM
遍历 DOM jQuery 提供了多种遍历 DOM 的方法.遍历方法中最大的种类是树遍历(tree-traversal). 向上父节点parent,向下子节点child,同胞next和pre 缩写搜索 ...
- 快速打开和关闭SQL服务
将下面文本复制到txt中,然后将文本文件另存为bat @echo off for /f "skip=3 tokens=4" %%i in ('sc query MSSQLSERVE ...
- HDU - 1099 - Lottery - 概率dp
http://acm.hdu.edu.cn/showproblem.php?pid=1099 最最简单的概率dp,完全是等概率转移. 设dp[i]为已有i张票,还需要抽几次才能集齐的期望. 那么dp[ ...
- 多行文字的垂直居中或高度不同的图片垂直居中---:after伪类+content
如何让多行文字垂直居中?或者如何让图片垂直居中? 1.demo--css .box { width: 300px; height: 300px; background-color: #f5e79e; ...