HTTPS 才是未来

MAY 24, 2013

去年开始写这个博客的时候,我就部署使用了 HTTPS 的连接。最开始,无非是觉得地址栏 URL 旁边有一把锁看起来也更炫,并且也是尝试看看 HTTPS 的设置过程是怎样的。

优越感

电子前哨基金会一直在致力于推广「在理想的世界中,任何网络请求都能默认为HTTPS的」这一理念。

使用 HTTPS 连接的网站在国内有一个天然的优势:防止运营商插入广告劫持。之所以在博客已经日渐式微的今天我还在部署独立博客,很重要的一个原因就是在自己的网站上,我可以完全掌控内容,包括赶走讨人厌的运营商广告

随着互联网的发展,用户的网络访问记录也已经成为有价值的信息,可以被各种商业场景来使用。

来看看这个场景:在你访问网站尤其是购物的时候,旁边都有几双眼睛正在盯着你:访问过哪里、停留了多久,以至于输入了什么,不管是输入密码还是搜索记录,他们都知道。不过,他们并不需要坐在你旁边盯着你的屏幕:这种监视发生在电脑里,网线上。像是在听故事吗?可惜着不是故事, V2EX 上就有用户反应某运营商给用户植入广告并且跟踪用户上网行为

因此,很多网站已经在用户登陆、付款等有敏感数据交互的过程中使用了 HTTPS 的连接,防止和用户间的数据交换被监控。

但是这种覆盖还不够全面:仅仅是你无意间安装的某个软件乃至浏览器插件,都可能在悄悄的观察着你的上网记录,伺机给你推送一些相关的小广告,更别说你的电信服务商了。未来的网站,应该负责任地把和用户的所有通信都进行加密,而不仅仅是那些自认为重要的数据。

局限性

因为 HTTPS 的连接建立过程比单纯的 HTTP 连接更复杂。所以访问速度会被拖慢。不过还好还有 SPDY

前段时间切换到 DigitalOcean 重新部署 VPS ,我索性把服务器从 NGINX 切换回了 Apache ,可以更加简单的部署 SPDY 服务,这样一来,在当前版本的 Chrome 和 Firefox 上,用户已经可以获得比较优秀的访问速度。

另外一个问题就是由于历史原因,服务器只能为一个IP地址/端口组合提供一个可以验证的证书。

所以如果同一个服务器上需要部署多个不同域名的 HTTPS 网站,则需要服务器本身有多个 IP 地址或者使用一个名为域名指示 (SNI) 的特性,但是很多比较旧的客户端 (例如 Windows XP 下的 IE) 并不支持 SNI。

成本

总的来说,在网站上部署 HTTPS 已经越来越容易:

StartSSL 提供免费的基于域名所有权验证的证书,并且他们的证书可以被绝大多数主要浏览器识别为有效的证书 (Opera 浏览器不支持)。只需要你验证域名注册时所留下的联系邮箱,就可以方便的获得一个证书。

这次因为更换网站域名,我又重新申请了一次证书,感觉 StartSSL 的证书申请流程已经更加简化,在个人信息认证的时候稍等客服的邮件回复就可以,并且客服回复速度也很快。

现在虽然只有 StartSSL 在免费提供这一服务,但是我相信未来的大公司,例如 Google 为了推广 SPDY ,将来也会提供基于域名所有权的免费简单验证证书。

此外,服务器追加 IP 地址的成本不高,基本上在每月 1~2 美元左右,考虑到旧浏览器的淘汰,未来在虚拟主机或者类似于 Heroku 等 PaaS 平台上基于 SNI 使用自己的证书的日子也不遥远。

tagged on: WEB , HTTPS
comments powered by Disqus