- 主题:求教HTTPS的一些基本问题
大家好。我想了解一下HTTPS,主要参考了这篇文章:
http://arstechnica.com/business/2011/03/https-is-more-secure-so-
why-isnt-the-web-using-it/
文章里提到了HTTPS的一些缺点:
1. “不能被网络缓存,假如跨大陆访问,这个问题就显得比较重要”
网络缓存页面的时候,会缓存登录后的页面吗?比如,我用我的账号登录某个网址,那
别人登录同一个网址的时候,总不应该看到和我完全相同的内容吧?网络上的各级缓存
是仅仅缓存图片、JS、CSS之类的未过期静态文件吗?
2. “会加重服务器负担”
大概会加重什么量级?一般来说,并发数会降低到HTTP的一半 / 10分1 / 还是多
少?
3. “一台机器上只能用同一个SSL证书”
一个SSL证书绑定的究竟是IP / 域名 / 还是啥?
假如多台机器共用同一个域名和同一个private key,可以用同一个证书吗?
购买一个SSL证书,使用时间一般是多久?如果我的某一个机器不用了,可以立刻停止
使用那台机器上的证书,停止交钱吗?还是说一买就是一年,且只能用在一台机器+一
个域名上?
我看到的普通SSL证书大概在10美金/年左右。但是一个wildcard SSL证书就要300美
金。真的贵这么多么...
4. HTTP可以很容易的被监听,泄露POST data,header等内容,没错吧?我看了几
个大网站的登录系统:
- 淘宝重定向到HTTPS
- 新浪用HTTP,但是RSA加密了password field
- 百度和163,直接用plain text POST用户名、密码
百度、163这么干真的没问题吗?
大家都是怎么看HTTPS的取舍的?如果让你来做网站,什么样的网站(功能)你会用
HTTPS?
--
FROM 182.55.97.*
帮顶
--
FROM 122.240.199.*
1. “不能被网络缓存,假如跨大陆访问,这个问题就显得比较重要”
网络缓存页面的时候,会缓存登录后的页面吗?比如,我用我的账号登录某个网址,那
别人登录同一个网址的时候,总不应该看到和我完全相同的内容吧?网络上的各级缓存
是仅仅缓存图片、JS、CSS之类的未过期静态文件吗?
是否缓存取决于中间的Proxy Server或是web server,任何html,js,css,img等资源都可以缓存。缓存的目的就是为了加速网络访问,节省网络带宽,比如大公司可能购买网络加速器,其实就是个代理服务器带有缓存功能,一个人访问了百度页面被缓存起来,别的人再访问百度页面时首先从缓存中查找页面。
2. “会加重服务器负担”
大概会加重什么量级?一般来说,并发数会降低到HTTP的一半 / 10分1 / 还是多
少?
HTTPS之所以为加重服务器负担是因为要进行SSL数据加解密,这个比较耗CPU,一般来说服务器的硬件配置都比较高,这点加解密不是大问题,并发数比HTTP要少一些,能减少30%就不错了。
3. “一台机器上只能用同一个SSL证书”
一个SSL证书绑定的究竟是IP / 域名 / 还是啥?
假如多台机器共用同一个域名和同一个private key,可以用同一个证书吗?
购买一个SSL证书,使用时间一般是多久?如果我的某一个机器不用了,可以立刻停止
使用那台机器上的证书,停止交钱吗?还是说一买就是一年,且只能用在一台机器+一
个域名上?
我看到的普通SSL证书大概在10美金/年左右。但是一个wildcard SSL证书就要300美
金。真的贵这么多么...
证书一般是与域名有关,SSL握手过程要检查证书里的hostname与实际访问的hostname是否一致,也要检查证书是否过期。一般证书是按年收费,不到期就可以一直使用。
用openssl自己生成一个私人证书也可以凑合使用,只不过浏览器会报证书错误(因为不是CA签发的),但是不影响用户继续网络访问,直接点忽略即可。
4. HTTP可以很容易的被监听,泄露POST data,header等内容,没错吧?我看了几
个大网站的登录系统:
- 淘宝重定向到HTTPS
- 新浪用HTTP,但是RSA加密了password field
- 百度和163,直接用plain text POST用户名、密码
百度、163这么干真的没问题吗?
HTTP POST的数据一般都是明文,抓一下登录水木的包就知道了,密码是明文的!
不过HTTPS也不是绝对的安全,MITM就可以轻松地得到HTTPS传输的用户名密码。
连QQ的登录和聊天都可以被破解,没有绝对的安全,一切都是利益驱动的。
--
FROM 111.198.196.*
多谢moneyseeker的解答!
第一个问题我还是不太明白。Web server,CDN上的缓存我了解,这些都是网站开发人
员控制/配置的。我想问的是,是否有中间路由器、ISP服务器之类的地方,会在开发人员
不察觉的情况下,根据某些规则,自动缓存某些资源?比如,A和B各自用自己的账号登陆
了www.baidu.com,开发人员肯定懂得应该返回不同的用户名在页面里。但要是有中间
服务器自作主张把web server返回A的页面缓存下来,然后再发给B,这就出问题了吧。
所以,我的问题是,是否所有的缓存都是开发人员有意识地定义/配置的?
【 在 moneyseeker (地命海心) 的大作中提到: 】
: 1. “不能被网络缓存,假如跨大陆访问,这个问题就显得比较重要”
: 网络缓存页面的时候,会缓存登录后的页面吗?比如,我用我的账号登录某个网址,那
: 别人登录同一个网址的时候,总不应该看到和我完全相同的内容吧?网络上的各级缓存
: ...................
--
FROM 182.55.97.*
一般来说缓存的都是静态html页面,对应动态页面asp,jsp,php等不做缓存。
假如是www.baidu.com这样的静态页面,不同的账号登录百度,网络中的中间设备,比如代理服务器完全可以缓存response page,不过与用户相关的信息一般是放在reponse header的cookie里,这个是独立的,而且一般的缓存器都会cache住这些信息的,因此不同的用户的cookie不一样,所以不会有问题,当然这个还要看具体的代理服务器的实现策略,有的是cache ip。
是否需要取缓存中的页面,浏览器发送的request header里可以指定。
建议你看看神书《HTTP权威指南》,写的很清楚。
【 在 byethu 的大作中提到: 】
: 多谢moneyseeker的解答!
: 第一个问题我还是不太明白。Web server,CDN上的缓存我了解,这些都是网站开发人
: 员控制/配置的。我想问的是,是否有中间路由器、ISP服务器之类的地方,会在开发人员
: ...................
--
FROM 111.198.196.*
噢,多谢。我这就弄来看看
【 在 moneyseeker (地命海心) 的大作中提到: 】
: 一般来说缓存的都是静态html页面,对应动态页面asp,jsp,php等不做缓存。
: 假如是www.baidu.com这样的静态页面,不同的账号登录百度,网络中的中间设备,比
如代理服务器完全可以缓存response page,不过与用户相关的信息一般是放在reponse
header的cookie里,这个是独立的,而且一般的缓存器都会cache住这些信息的,因此不
同的用户的cookie不一样,所以不会有问题,当然这个还要看具体的代理服务器的实现策
略,有的是cache ip。
: 是否需要取缓存中的页面,浏览器发送的request header里可以指定。
: ...................
--
FROM 182.55.97.*