《图解Http》 HTTPS 安全协议

相关博客:https://www.cnblogs.com/chentianwei/p/9374341.html  (讲的更明白,有图)

HTTPS


7.1http的缺点

  1. 使用明文,内容会被窃听。
  2. 不验证通信方的身份,遭遇伪装。
  3. 无法证明报文完整性,可能被篡改。

7.11 通信被窃听

互联网上任何角落都存在被窃听的风险。

Packet Capture, Sniffer抓包和嗅探器,如广泛使用的Wireshark工具。

  • 通信加密: HTTP over SSL就是HTTPS。  增加了Secure Socket Layer安全套接层SSL。
  • 内容加密:报文主体进行算法加密(非整个通信线路的加密,有被破解的风险)

7.12 不验证,遭遇伪装

http协议由于不对身份验证,任何人都可以发送请求,所以留下各种隐患:

  • 伪装的服务器。无法确定请求是否发送到真正的目标服务器,可能请求被拦截,然后使用伪装的服务器返回响应。
  • 同样,客户端也有可能是伪装的。
  • 无法判定请求来自何方,(没有证书)
  • 服务器对无意义的请求也会接收,无法阻止海量的DoS攻击,(拒绝服务攻击:通过大量请求信息沾满服务器资源,导致真正的请求无法处理)

通过证书机构颁发的证书来验证身份是一种安全保障:

7.13 无法证明报文的完整性, 中间人攻击

Man-in-the-Middle attach中间人攻击: 攻击人会篡改请求和响应,让服务器和客户端之间的通信看起来仍是正常的,但实际已经被控制。

如何防止篡改:

常用的MD5和SHA-1等hash值校验的方法,和用来确认文件的数字签名方法,仍不能完全保障安全。

(见博客:6.66 Content-MD5首部)

MD5是单向函数生成的散列值。本身仍可能被篡改。因此必须使用HTTPS。

SSL提供了认证和加密处理, 摘要功能。


7.2 HTTP + 加密 + 认证 + 完整性保护 = HTTPS

7.23 Public-key cryptography  公开密匙 密码算法

加密算法公开,但密匙是保密的。只有通过密匙,才能对密码解密。

双方使用这个算法对通信的内容进行加密和解密,以保障信息的安全。但是,

如何安全的把密匙传给对方?

这是对称加密算法的困境。(Common key crypto system 共享密匙加密系统)

答案:使用公开密匙加密算法。又叫做非对称密匙加密算法。

公开密匙由,一把private key和 任意多的公key组成。接收密文的一方持有private key,发送密文的一方持有公key。通过公key加密的报文,只有private key可以解开。

因此,服务器只需要把公key提供给客户端。

HTTPS的混合加密机制:

  1. 密匙交换环节:客户端获得公开密匙,通过非对称加密算法加密传输‘对称密匙’给服务器
  2. 通信交换报文环节:双方使用对称密匙加密方式,交换报文。

7.24证明公开密匙正确性的证书

客户端获得的公开密匙有可能被黑客调包了,客户得到的是假的公开密匙,怎么办?

答案:使用数字证书认证机构颁发的公开密匙证书。

服务器运营者申请数字证书的业务流程:

  申请->确认身份->对申请的公开密匙做数字签名->分配这个签名的公开密匙,并将密匙和证书绑定。

  1. 服务器把公钥和证书发给客户端。
  2. 客户端用数字证书认证机构的公开密匙对证书上的数字签名进行验证。
  3. 一旦验证通过,客户端即可安全的使用服务器的公开密匙了。

??: 多数浏览器内部会有常用认证机构的公开密匙。

客户端也可以使用数字证书。在安全性极高的领域:如网上银行的网银登陆就使用了客户端证书。

扩展:认证机构的信誉第一,认证机构有被黑客入侵的事件发生。

7.25 HTTPS的安全通信机制

HTTPS的成本导致网站不会一直使用

  1. 加密消耗更多的cpu, cache
  2. 购买证书也是开销,一个证书600元/年。

SSL导致通信慢,和处理速度慢。比http慢2-100倍。

针对这一问题有专门的服务器来改善问题,不过这又是成本。

原文地址:https://www.cnblogs.com/chentianwei/p/9496670.html

时间: 2024-11-09 09:25:18

《图解Http》 HTTPS 安全协议的相关文章

HTTPS传输协议原理

我们常常在使用网上银行时看到的连接都是以“https”开始的,那么这个https是什么呢?这其实是表示目前连接使用了SSL进行加密,能保证客户端到服务器端的通信都在被保护起来,那么浏览器是如果实现的呢?下面让我们来介绍一下SSL基本的实现方法. 首先我们有两种基本的加解密算法类型:对称加密,非对称加密(公私钥加密),现在介绍一下这两种加密算法的特点: 对称加密:密钥只有一个,加密解密为同一个密码,且加解密速度快,典型的对称加密算法有DES.AES等,示意图如下: 图1 对称加密 非对称加密:密钥

Https握手协议以及证书认证

1. 什么是https Https = http + 加密 + 认证 https是对http的安全强化,在http的基础上引入了加密和认证过程.通过加密和认证构建一条安全的传输通道.所以https可以看成是:在安全通道内,对数据进行对称加密后传输.这样即使黑客打破了安全通道,还有一层数据加密.极大的保障了数据通信的安全性. 2. https的演化 我们将从http的不安全方面着手,通过三个场景的阐述,来说明https是怎么来的以及其基本原理 Round 1: 正常交流: “客户”->“服务器”:

(转) HTTP & HTTPS网络协议重点总结(基于SSL/TLS的握手、TCP/IP协议基础、加密学)

HTTP & HTTPS网络协议重点总结(基于SSL/TLS的握手.TCP/IP协议基础.加密学) 原文:http://blog.csdn.net/itermeng/article/details/78517364 原文地址:https://www.cnblogs.com/liujiacai/p/8325931.html

Https安全协议在手机App与后台服务通信上的应用

引言 App要上苹果支付渠道,苹果支付票据容易被人篡改.伪造,造成平台收益与实际交易额对不上:且由于苹果支付平台暂时没有对账功能,造成很难区分真伪:只能提高应用的安全性,防止支付信息泄露或被篡改,因此打算引入https这种安全传输协议. 什么是Https,与Http有哪儿些异同 HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版.即HTTP下加入SSL层,HTTPS的

https SSL协议详解(转)

https协议详解 SSL (Secure Socket Layer) HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 https协议详解      HTTPS以保密为目标研发,简单讲是HTTP的安全版.其安全基础是SSL协议,因此加密的详细内容请看SSL.全称Hypertext Transfer Protocol over Secure Socket Layer.       它是一个URI scheme,句法类同http:体系.它使用了H

Nginx SSL+tomcat集群,取不到https正确协议

最近在做一个项目, 用到企业微信,架构上使用了 Nginx +tomcat 集群, 且nginx下配置了SSL,tomcat no SSL,项目使用https协议,但是在调试微信菜单的相关功能时却发现报错,报错信息如下: 经过调试dofilter里面的代码,发现: 浏览器中输入的URL是 https://shaidh.dhwrwi.com/dheu/syuu.do 但是打断点调试request.getRequestURL() 输出来的 一直是  http://shaidh.dhwrwi.com/

WebSphere应用服务器中https 请求协议的相关注意事项(服务器使用代理上Internet)

最近遇到个需求需要web服务器应用通过https方式请求外部Internet服务器的接口,一开始本地测试时使用以下代码: String businessCode = "SH30580"; GenerateXml xml = new GenerateXml(); String xmlContent = xml.writeXmlString(businessCode); // 创建SSLContext对象,并使用我们指定的信任管理器初始化 SSLContext sslContext = S

linux下wget命令,支持断点续传,ftp、http、https等协议

转载的地址:http://blog.163.com/[email protected]/blog/static/32097310201171833420905/ 今天操作远端机器的时候发现少一个安装包, 需要传到对方的机器上,还能使用通过的老办法,直接SSH连上去了,发现传的很慢, 只有40K的样子, 看时间还需要二个多小时就有点受不了了.想想有一台FTP服务器上有这个文件,可以直接从FTP服务器上下载不就得了.本想电话指导着操作,但想到对面的操作能力,不禁心里又打起鼓来. 使用google搜了

python Flask 使用https 安全协议

1 需要安装python 的 openssl 的类库,使用pip 安装 1 pip install pyOpenSSL 2 在 Flask 的代码中可以直接使用 from flask import Flask app = Flask(__name__) app.run('0.0.0.0', debug=True, port=8100, ssl_context='adhoc') 以上代码使用 pyOpenSSL 自带证书. 如果要使用自己配置的证书,可以自己配置一个,然后使用. 生成证书: Gen