`
wb284551926
  • 浏览: 551491 次
文章分类
社区版块
存档分类
最新评论

关于HTTPS的七个误解

 
阅读更多

本文详细讨论了关于HTTPS的七个误解,误解内容包括HTTPS无法缓存、SSL证书很贵、HTTPS太慢等等,以下是原文,希望你可以更透彻地了解HTTPS。 


 


误解七:HTTPS无法缓存 

许多人以为,出于安全考虑,浏览器不会在本地保存HTTPS缓存。实际上,只要在HTTP头中使用特定命令,HTTPS是可以缓存的。 

微软的IE项目经理Eric Lawrence写道: 

引用
“说来也许令人震惊,只要HTTP头允许这样做,所有版本的IE都缓存HTTPS内容。比如,如果头命令是Cache-Control: max-age=600,那么这个网页就将被IE缓存10分钟。IE的缓存策略,与是否使用HTTPS协议无关。(其他浏览器在这方面的行为不一致,取决于你使用的版本,所以这里不加以讨论。)”


Firefox默认只在内存中缓存HTTPS。但是,只要头命令中有Cache-Control: Public,缓存就会被写到硬盘上。下面的图片显示,Firefox的硬盘缓存中有HTTPS内容,头命令正是Cache-Control:Public。 


 


误解六:SSL证书很贵 

如果你在网上搜一下,就会发现很多便宜的SSL证书,大概10美元一年,这和一个.com域名的年费差不多。而且事实上,还能找到免费的SSL证书。 

在效力上,便宜的证书当然会比大机构颁发的证书差一点,但是几乎所有的主流浏览器都接受这些证书。 

误解五:HTTPS站点必须有独享的IP地址 

由于IPv4将要分配完毕,所以很多人关心这个问题。每个IP地址只能安装一张SSL证书,这是毫无疑问的。但是,如果你使用子域名通配符SSL证书(wildcard SSL certificate,价格大约是每年125美元),就能在一个IP地址上部署多个HTTPS子域名。比如,https://www.httpwatch.com和https://store.httpwatch.com,就共享同一个IP地址。 


 


另外,UCC(统一通信证书,Unified Communications Certificate)支持一张证书同时匹配多个站点,可以是完全不同的域名。SNI(服务器名称指示,Server Name Indication)允许一个IP地址上多个域名安装多张证书。服务器端,Apache和Nginx支持该技术,IIS不支持;客户端,IE 7+、Firefox 2.0+、Chrome 6+、Safari 2.1+和Opera 8.0+支持。 

误解四:转移服务器时要购买新证书 

部署SSL证书,需要这样几步: 

1. 在你的服务器上,生成一个CSR文件(SSL证书请求文件,SSL Certificate Signing Request)。 
2. 使用CSR文件,购买SSL证书。 
3. 安装SSL证书。 
这些步骤都经过精心设计,保证传输的安全,防止有人截取或非法获得证书。结果就是,你在第二步得到的证书不能用在另一台服务器上。如果你需要这样做,就必须以其他格式输出证书。 

比如,IIS的做法是生成一个可以转移的.pfx文件,并加以密码保护。 


 


将这个文件传入其他服务器,将可以继续使用原来的SSL证书了。 

误解三:HTTPS太慢 

使用HTTPS不会使你的网站变得更快(实际上有可能,请看下文),但是有一些技巧可以大大减少额外开销。 

首先,只要压缩文本内容,就会降低解码耗用的CPU资源。不过,对于当代CPU来说,这点开销不值一提。 

其次,建立HTTPS连接,要求额外的TCP往返,因此会新增一些发送和接收的字节。但是,从下图可以看到,新增的字节是很少的。 


 


第一次打开网页的时候,HTTPS协议会比HTTP协议慢一点,这是因为读取和验证SSL证书的时间。下面是一张HTTP网页打开时间的瀑布图。 


 


同一张网页使用HTTPS协议之后,打开时间变长了。 


 


建立连接的部分,大约慢了10%。但是,一旦有效的HTTPS连接建立起来,再刷新网页,两种协议几乎没有区别。先是HTTP协议的刷新表现: 


 


然后是HTTPS协议: 


 


某些用户可能发现,HTTPS比HTTP更快一点。这会发生在一些大公司的内部局域网,因为通常情况下,公司的网关会截取并分析所有的网络通信。但是,当它遇到HTTPS连接时,它就只能直接放行,因为HTTPS无法被解读。正是因为少了这个解读的过程,所以HTTPS变得比较快。 

误解二:有了HTTPS,Cookie和查询字符串就安全了 

虽然无法直接从HTTPS数据中读取Cookie和查询字符串,但是你仍然需要使它们的值变得难以预测。 

比如,曾经有一家英国银行,直接使用顺序排列的数值表示session id: 


 


黑客可以先注册一个账户,找到这个cookie,看到这个值的表示方法。然后,改动cookie,从而劫持其他人的session id。至于查询字符串,也可以通过类似方式泄漏。 

误解一:只有注册登录页,才需要HTTPS 

这种想法很普遍。人们觉得,HTTPS可以保护用户的密码,此外就不需要了。Firefox浏览器新插件Firesheep,证明了这种想法是错的。我们可以看到,在Twitter和Facebook上,劫持其他人的session是非常容易的。 

咖啡馆的免费WiFi,就是一个很理想的劫持环境,因为两个原因: 

1. 这种WiFi通常不会加密,所以很容易监控所有流量。 
2. WiFi通常使用NAT进行外网和内网的地址转换,所有内网客户端都共享一个外网地址。这意味着,被劫持的session,看上去很像来自原来的登录者。 
以Twitter为例,它的登录页使用了HTTPS,但是登录以后,其他页面就变成了HTTP。这时,它的cookie里的session值就暴露了。 


 


也就是说,这些cookie是在HTTPS环境下建立的,但是却在HTTP环境下传输。如果有人劫持到这些cookie,那他就能以你的身份在Twitter上发言了。

分享到:
评论

相关推荐

    HTTPS的七个误解

    #### 误解七:HTTPS无法缓存 很多人误以为为了保障安全性,浏览器不会在本地缓存HTTPS内容。实际上,HTTPS页面是可以被缓存的,只需要通过HTTP头部信息中的特定指令即可实现。 **具体实现方法**: - **IE浏览器**...

    HTTPS权威指南

    HTTP起初是一个简单的协议,因此你可能会认为关于这个协议没有太多好 说的。但现在,你手上拿着的是却一本两磅重 的书。如果你对我们怎么会写出一本650页 的关于HTTP的书感到奇怪的话,可以去看一下目录。本书不仅仅...

    U8 cloud业务指南小册子20201208.docx

    - **心理预期管理**: 对于从U8升级至U8Cloud的客户,需提前做好心理预期管理,避免因操作习惯不同而产生不满或误解。 #### 五、相关链接地址 - **体验中心**: ...

    goaliepost-timezone-fix:一个简单的用户脚本,可在https上更新游戏时间

    7. **时间同步问题**:在线服务与用户设备之间的时区不一致可能导致误解或不便,而这个脚本就是为了解决这个问题。 8. **阅读和调试用户脚本**:学习如何阅读和使用这些脚本可以帮助开发者提升他们的Web开发技能,...

    C# 2015开发微信支付统一下单接口, 支付完成通知接口,坑了一个周终于出来了 分享给大家

    支付完成通知接口,坑了一个周终于出来了 分享给大家 最主要的坑就是APP签名 大家做的时候 为避免大家误解这个签名 我把签名工具的下载地址给大家 https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5...

    Leet-Code:在https上编码问题的解决方案

    2. **处理URL编码**:确保URL中的特殊字符被正确编码,避免URL无效或被误解。 3. **JSON编码与解码**:掌握JSON对象的创建、序列化和反序列化,确保数据在传输过程中不丢失信息。 4. **理解HTTPS的加密流程**:...

    7步法评估测量不确定度.zip

    本指南为英文版指南《7 STEPS TO ESTIMATE UNCERTAINTY FOR ISO/IEC 17025 ACCREDITED CALIBARATION AND TESTING LABS》,源自网站:https://www.isobudgets.com/。这本指南具有一定的参考价值,特别是里面收录的...

    linux-tapcurlinyoureditorbeforeitgetstoshit

    标题“linux-tapcurlinyoureditorbeforeitgetstoshit”和描述“tap curl in your editor before it gets to sh it”暗示了一个关于在Linux环境中使用`curl`命令时的优化技巧,尤其是涉及到在编辑器中预览或者处理...

    AxureRP.3987.com.rar

    在原型设计过程中,Axure RP还支持生成规格文档,这使得开发团队可以直接从原型中获取详细的设计规范,减少了沟通成本和可能出现的误解。此外,它还可以导出为HTML、SVG、Word等多种格式,方便与团队成员、利益相关...

    php-7.2.9-Win32-VC15-x64.zip

    标签 "PHP7" 指出,这个压缩包的内容与PHP的第七个主要版本有关。PHP 7带来了许多性能改进和新特性,包括改进的语法、更快的执行速度以及更好的内存管理。 下面是压缩包内的文件及其相关知识点: 1. **phar.phar....

    RadStudio10KeyGen10.2

    不过,这里提到的是10.2版本,所以这可能是一个误解或者是用户将DXE作为Rad Studio的通用术语。实际上,Rad Studio 10.2属于XE系列之后的产品,它可能包含了一些DXE版本的特性,但已经是更新的版本。 **Key ...

    GitHub-WHFpython项目中文

    这个项目主要涵盖了Python语言中的一些微妙、不直观或者容易误解的部分,帮助开发者避免在实际工作中遇到的问题。通过对这些"坑"的了解,我们可以提高代码的健壮性和可维护性,避免不必要的调试时间。 1. **Python...

    variableHomework:https:stewartdj.github.iovariableHomework

    7. const的误解: 虽然`const`不能重新赋值,但它并不意味着常量。如果`const`声明的是一个对象,那么对象的属性还是可以修改的。例如,`const obj = {key: 'value'}; obj.key = 'newValue';`是允许的。 8. 使用...

    工资计算器【可自定义国家政策参数】 V5.0 简体中文绿色免费版

    通过这种方式,用户可以快速了解自己的实际到手薪资,避免因为不熟悉政策而导致的误解。 总之,【工资计算器V5.0】是一个强大且灵活的工具,适合在全球各地工作的个人使用。无论是为了日常的工资计算,还是进行年度...

    grokking-monad:购买https:gum.cogrokking-monad在线阅读

    7. **Monad与函数式编程的关系**:阐述Monad在函数式编程范式中的地位,以及它们如何促进代码的组合和复用。 学习Monad不仅有助于提升对函数式编程的理解,还能帮助开发者编写出更优雅、更易于维护的代码。通过阅读...

    ACM比赛真题&答案解析.pdf

    7. **模拟**:模拟题要求按照题目给定的规则或流程进行模拟以得出结果。 #### 二、资源与平台 为了更好地准备ACM编程竞赛,了解不同资源和平台是至关重要的。以下是几个重要的资源: 1. **Live Archive**:这是一...

    电子邮件编码解码易语言源码

    它将非ASCII字符或可能在传输过程中被误解的字符替换为其等效的十六进制值,并在每个字符前加上等号(=)。Quoted-Printable编码确保了即使在纯文本环境中,接收者也能正确解读消息内容。在易语言源码中,这部分功能...

    DotProject.2.1.8中文版[甘特图及日历无乱码]

    首先,关于“甘特图”这一知识点,它是项目管理中常用的一种图表,用以显示项目进度计划,通过条形图的形式直观展示任务的开始与结束日期,以及它们之间的依赖关系。DotProject的甘特图功能允许用户创建、编辑和调整...

    技术研发api在线接口文档免费版

    标签中提到了“技术接口文档”,这是软件开发过程中的重要组成部分,用于记录和沟通API的功能、参数、返回值等信息,确保开发团队对API有清晰的理解,减少错误和误解。“在线多项目”表明这个工具可以同时管理多个...

    软件架构:组织原则与模式_Part2

    有效的协作不仅能够提高工作效率,还能减少误解和错误,确保软件开发的顺利进行。 第七章“简化:澄清与最小化”关注的是如何通过明确的目标设定和简洁的设计来降低复杂性。这包括对需求的深入理解、避免过度设计、...

Global site tag (gtag.js) - Google Analytics