HTTPS的七个误解(译文)

开发网页的时候,往往需要观察HTTP通信。

我使用的工具主要有两个,在Firefox中是Firebug,在IE中是Fiddler。但是,一直听别人说,付费软件HttpWatch是这方面最好的工具。


前几天,HttpWatch的官方网志刊登了一篇好文章,澄清了一些HTTPS协议容易产生误解的地方。学习之后,我增长了不少网页加密通信的知识。

我觉得这篇文章很实用,值得留作参考,就翻译了出来。

==============================================

HTTPS的七个误解

原文网址:http://blog.httpwatch.com/2011/01/28/top-7-myths-about-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上发言了。

时间: 2024-10-01 07:57:42

HTTPS的七个误解(译文)的相关文章

HTTPS的七个误解

HTTPS的七个误解 误解七:HTTPS无法缓存 许多人以为,出于安全考虑,浏览器不会在本地保存HTTPS缓存.实际上,只要在HTTP头中使用特定命令,HTTPS是可以缓存的. 微软的IE项目经理Eric Lawrence写道: "说来也许令人震惊,只要HTTP头允许这样做,所有版本的IE都缓存HTTPS内容.比如,如果头命令是Cache-Control: max-age=600,那么这个网页就将被IE缓存10分钟.IE的缓存策略,与是否使用HTTPS协议无关.(其他浏览器在这方面的行为不一致,

HTTPS的七个误解_相关技巧

误解七:HTTPS无法缓存 许多人以为,出于安全考虑,浏览器不会在本地保存HTTPS缓存.实际上,只要在HTTP头中使用特定命令,HTTPS是可以缓存的. 微软的IE项目经理Eric Lawrence写道: "说来也许令人震惊,只要HTTP头允许这样做,所有版本的IE都缓存HTTPS内容.比如,如果头命令是Cache-Control: max-age=600,那么这个网页就将被IE缓存10分钟.IE的缓存策略,与是否使用HTTPS协议无关.(其他浏览器在这方面的行为不一致,取决于你使用的版本,所

总结经常会犯的HTTPS的七个误解

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版.即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL. 误解七:HTTPS无法缓存 许多人以为,出于安全考虑,浏览器不会在本地保存HTTPS缓存.实际上,只要在HTTP头中使用特定命令,HTTPS是可以缓存的. 微软的IE项目经理Eric Lawrence写道: "说来也许令人震惊

浏览器缓存机制浅析(转)

非HTTP协议定义的缓存机制 浏览器缓存机制,其实主要就是HTTP协议定义的缓存机制(如: Expires: Cache-control等).但是也有非HTTP协议定义的缓存机制,如使用HTML Meta 标签,Web开发者可以在HTML页面的<head>节点中加入<meta>标签,代码如下: <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 上述代码的作用是告诉浏览器当前页面不被缓存,每

HTTPS 升级指南

上一篇文章我介绍了 HTTP/2 协议 ,它只有在 HTTPS 环境才会生效. 为了升级到 HTTP/2 协议,必须先启用 HTTPS.如果你不了解 HTTPS 协议(学名 TLS 协议),可以参考我以前的文章. <HTTPS 协议概述> <图解 HTTPS 协议> <HTTPS 协议的七个误解> <HTTPS 协议的延迟有多大?> 本文介绍如何将一个 HTTP 网站升级到 HTTPS . 一.获取证书 升级到 HTTPS 协议的第一步,就是要获得一张证书.

SLB高性能与高可用技术实践全解析

从支付宝官方公布的数据来看,在除夕当天大约有2亿人参加红包活动.今年的SLB和往年是不一样的,SLB进行了平台重构,为业务提供了跨可用区的方案.以下内容根据直播视频整理而成. 直播回顾:点击进入 pdf下载:点击进入 全集团的流量入口 SLB成了公有云.云产品服务.电商平台.交易平台的流量入口. 负载均衡简介 负载均衡即分担负载.提供服务,具体的说是当访问请求进入到SLB后,SLB会做后端服务器的选择,通过某种负载分担技术,将外部发送来的请求均匀分配到对称结构中的某一台服务器上,而接收到请求的服

伪标签:教你玩转无标签数据的半监督学习方法

更多深度文章,请关注云计算频道:https://yq.aliyun.com/cloud 对于每个机器学习项目而言,数据是基础,是不可或缺的一部分.在本文中,作者将会展示一个名为伪标签的简单的半监督学习方法,它可以通过使用无标签数据来提高机器学习模型的性能. 伪标签 为了训练机器学习模型,在监督学习中,数据必须是有标签的.那这是否意味着无标签的数据对于诸如分类和回归之类的监督任务就无用了呢?当然不是! 除了使用额外数据进行数据分析,还可以将无标签数据和标签数据结合起来,一同训练半监督学习模型. 该

正则判断是URL或是搜索串?

问题描述 (http|https)://((\w)*|([0-9]*)|([-|_])*)+([\.|/]((\w)*|([0-9]*)|([-|_])*))+ 这个可以判断http://a.com是URL但是我想让a.com也判断是URL,即http://或https://可以不写,也算是URL,这个正则要怎么写?我这样写始终判断不出来:(?:((?:http(?:s)?://)?))?((\w)*|([0-9]*)|([-|_])*)+([\.|/]((\w)*|([0-9]*)|([-|_

网友争相“改造”乔布斯情书

CFP供图 从青丝到白头,摄影师无意间的同一角度见证了乔布斯夫妇伉俪情深 □晚报记者 谢正宜 报道 "天命已知顾往昔,青丝易白,骸骨已陋,阴阳相隔,相思如红豆.今生无所求,来世再相谋. "这情意绵绵的文字不是哪位古人的创造,而是乔布斯的"情书"! 24日,苹果联合创始人乔布斯生前唯一授权的传记<史蒂夫·乔布斯传>(以下简称<乔布斯传>)全球首发,引发关注热潮,甚至连林青霞都在微博上透露自己被迷住了,"好看的书让你一打开就合不上,已经