全面进入HTTPS加密时代

新年来临,也有些新变化。在网站方面,我把我所有能换成HTTPS SSL的网站都迁移到了HTTPS SSL——包括我帮忙制作的英国湘味情中餐馆网站,全面加速进入到HTTPS加密时代。
本次升级为HTTPS主要借助于CloudFlare的免费HTTPS证书。由于这些网站也不再使用Media Temple的主机服务,于是改用了更为小众的戈戈主机,流量方面不再宽裕,安全性能方面也不得而知,于是也像土木坛子这个网站一样,启用了CloudFlare的CDN全球加速,再配合HTTPS+HSTS加密,HTTP/2功能也能启用。
因此,使用CloudFlare全球CDN后,可以最大限度提高网站的访问速度,并且节省源主机CSS, JS和图片等静态文件的流量,CloudFlare的反代理DNS能够隐藏源主机IP,进一步提高主机安全性。当然CloudFlare也不是没有缺点,CloudFlare免费CDN下面的HTTPS SSL证书不支持一些过时的浏览器。不过我觉得这些浏览器用户所占比例不大,没有必要迁就他们。
升级到HTTPS后,再到Google网站管理中心更新了一下,很快就收录了新的HTTPS链接。Google对HTTPS的支持力度实在是不一般。
值得记录的几件事情:DNSSEC, AdSense, Firefox
这两天有几件事情值得记录,分别如下。
开启域名DNSSEC功能
昨天收到CloudFlare的邮件,告知CloudFlare全面支持DNSSEC功能,即支持安全的DNS解析功能,可以防止网站域名解析被投毒。
作为一向支持拥抱新技术的博客网站,土木坛子第一时间就设置好托管在CloudFlare下所有域名的DNSSEC,设置方法很简单,CloudFlare有相应的参数介绍,具体也可以参考JUSTYY博主的贴子。
至此,土木坛子这个表面看似简单的网站,底层几乎用上了所有目前我能接触到的高大上的技术与特征,自适应网页,域名隐私保护,HTTPS SSL加密, 浏览器内嵌HSTS限制HTTPS, CloudFlare Pro CDN, 现在又加上DNSSEC(更新:2015年12月3日开始,CloudFlare全面免费支持HTTP/2协议,因此土木坛子现在也支持HTTP/2)。
全面撤下AdSense广告
土木坛子撤下Google AdSense广告有一段时间了,从今天开始,如无特殊情况,我会全面撤下我其它网站上的AdSense广告。
以前出于兴趣,投放的AdSense广告收到过一些收入,其中还有一部分捐给了我的小公益项目。
可是,我发现Google的规则越来越严格,搞不清哪个地方就会碰到它的TOS条款,然后就收到Google的警告邮件,这大大限制我在网上写作的自由,现在全面撤下AdSense广告,图个自由清静——本来也没有多少广告收入。
体验Firefox iOS浏览器
从昨天开始,Mozilla推出了Firefox for iOS浏览器,第一时间我就安装了它,等待它太长时间了。虽然这些年Firefox PC浏览器不如Chrome,但Chrome毕竟不是开源浏览器,Firefox有它开源存在的意义。
现在,iPhone, iPad上也有了Firefox的版本,纵然内核依然是WebKit渲染引擎,但好歹有了正宗的Firefox浏览器。初期版本似乎UI还不错——目前也就只是一个壳,我不喜欢Chrome for iOS的笨重,当然也不喜欢它的UI——虽然比Safari要好一点点。
CDN升级成收费CloudFlare Pro套餐

从昨天开始,土木坛子启用CloudFlare的收费CDN服务Pro套餐,就当九周岁的一个礼物。
使用收费服务后,好处是可以使用收费的功能。移动设备优化,更快的DNS解析速度(英国只有8 ms)图片压缩加速,更勤快的缓存频率,共享IP的网站数量更少(以前免费账号下面同IP下面甚至有擦边球网站),HTTPS SSL证书支持更多浏览器型号——IE 7也支持了,大部分RSS订阅服务也恢复正常。
应该说,CloudFlare的免费账号提供的功能其实已经够好。我只是觉得不付费,有点占人家便宜的感觉,因为我一直觉得“免费的东西经常是最贵的”,所以我之前在网站下面标注:感谢CloudFlare提供全球CDN加速。现在可以心安理得地去掉这行致谢了。交了保护费后,理论上服务总应该比免费好。
那之前为什么不加入收费套餐?原因是CloudFlare不太合理的收费制度,每个账号下面,第一个域名20美元一个月,第二个是5美元。于是,我忽悠中文博客界的土豪——赖博士加入,然后,我以第二个域名加入,那样就是5美元。
我本来就这么随便一说,没想到,他第二天就炫耀地跟我说,他三个网站都升级到收费的CloudFlare,并且还将我这个提议变成了商机,他说,谁想加入收费的CloudFlare,挂在他的账号下面,他收费10美元什么的,大家共赢……这精明的福建人,难怪成土豪,中文博客界的人生赢家。
结果,我就占了他便宜,也升级到CloudFlare收费的CDN,赖博士说:高大上。至少,在被ICDSoft踢出后,土木坛子也只能找CDN才能维持下去。
现在土木坛子在网站上每年的投入资金也不小,每个月20多美元的主机费,再加上域名、SSL证书费用,现在又用上收费的CDN。在我还有钱把它撑下去时,尽力撑下去。
赖博士说,为兴趣爱好花这点钱,比上红灯区嫖强多了,说得他好像干过那事似的……话糙理不糙,坚持写博客的男人都是好男人,那写博客的女人呢?至少能找到好男人吧。
CloudFlare CDN使用经验和技巧

以前用过国产的CDN(content delivery network, 内容分发网络),效果不佳,很长一段时间对CDN失去兴趣。后来用了Incapsula的CDN,也没有什么印象。最近用上CloudFlare的CDN,感觉还不错。和我同样用MT主机的佐仔最近也加入了CloudFlare的阵营,中文博客界VPS最高配置的赖博士更是把他中文和英文网站都用上CloudFlare的CDN。
他们问我有哪些CloudFlare设置经验技巧?我觉得CloudFlare的设置很人性化,注册按提示操作很快就可以实现全部配置,简单到可以用默认的设置即可,不过,我还是有一些个人觉得比较好的配置:
- DNS选项:DNS Records里面将泛解析去掉(如果有的话),只留下CloudFlare“云朵”保护下的A解析和CName解析(我这里的解析速度快到只有11 ms),彻底隐藏网站的源IP,对防DDoS攻击有一点点好处。DNS分配的IP通常有2个,CloudFlare使用了Anycast和Nginx反向代理技术,实际上CDN加速时,会自动分配最近的数据中心,https://tumutanzi.com/cdn-cgi/trace 可以查看浏览器联系的数据中心(colo值对应相应的数据中心)。
- Crypto选项:我启用了SSL (with SPDY) Strict(我的网站本身有SSL),意思是CloudFlare的服务器和我的主机之间的通信也需要SSL加密,然后我还启用了HTTP Strict Transport Security (HSTS),并开启里面的所有附加选项。
- Speed选项:Auto Minify里选择Gzip压缩CSS, JS和HTML三个选项,减少网页传输流量大小。Rocket Loader™,进一步合并优化JS代码异步加载,我选择Automatic。这个功能因人而异,需要自己测试,如果对网页加载有影响的话就不要启用,毕竟是BETA功能。
- Firewall选项:Security Level我使用了高级High。
- Caching选项:Browser Cache Expiration我选择了一年的有效期。
- ScrapeShield选项:Email Address Obfuscation启用,保护网页上出现的邮箱名不被机器人扫描。
总体来讲,我认为CloudFlare不仅仅是CDN,还有一些网页优化、安全防护的功能,并且都是免费用户就可以享用。用上CloudFlare后,我的源主机几乎看不到网站资源消耗,连流量都节省了60%以上,统计显示,最近7天来,总流量10.31 GB,缓存化的流量达6.72 GB,挡住了285个有害威胁(主要来自中国)。
发现了一个小伎俩,和我几乎相同软件和硬件配置的佐仔说,无论如何都配置不好CloudFlare的HTTPS SSL,总是出现502错误,我重新购买了SSL证书亲自试验了一下,发现重新注册一个CloudFlare账号就解决了问题,CloudFlare似乎对免费账号的SSL功能有所保留,也可能是BUG,百撕不得骑姐。
我对赖博士说,如果不考虑中国大陆的访问速度,我目前还找不到理由不用CloudFlare的CDN。当然,也可能正是这条理由,大部分中文网站不太可能拥抱CloudFlare的CDN。
网站开启HSTS严格HTTPS功能并加入HSTS Preload List

从今天开始,土木坛子开启HSTS(HTTP Strict Transport Security)严格强制HTTPS SSL功能。
我一直支持HTTPS,在启用全站HTTPS后,用301的方式将所有HTTP访问请求自动转成HTTPS加密。但这种服务器端301的方式,并不能阻止浏览器到服务器之间HTTP链接被截持,因为此时的通信,并不是HTTPS。
启用HSTS协议后,在初次访问HTTPS后,用户在浏览器中再输入HTTP链接,浏览器本身会将HTTP链接自动转成HTTPS,会更加全面保护访问者的隐私,例如,没有人能在网络上截取你访问过土木坛子上关于艳照门的博文。
显然,使用HSTS的前提条件有两个,用户必须在之前成功用HTTPS访问过网站,浏览器支持HSTS协议。
这个功能实际意义并不是特别大,它相当于解决这么一个问题,以前需服务器端301跳转HTTP到HTTPS实现的功能现在直接在浏览器端自动完成,代替人工输入HTTPS链接——当然也可以用HTTPS Everywhere插件实现。
对于土木坛子倒是有一点小实用,如果你身在某国,你现在支持HSTS协议的浏览器里(Chrome, Firefox, Safari, IE 11+, Opera),直接输入 tumutanzi.com 或 www.tumutanzi.com,能实现访问了,浏览器自动将链接变成 https://tumutanzi.com,而在今天之前是不行的,tumutanzi.com 在到达服务器之前就已经被某墙截断通信。
其实我倒不是主要在乎这个好处,而是出于对新技术的好奇,有了新技术又能轻松支持,为什么不支持呢?相反,对于老旧的技术,比如Windows XP下的IE浏览器不支持SNI,本网站现在就不支持访问。
HTTPS现在普及得越来越快,百度支持收录HTTPS网站后,现在百度里搜索“土木坛子”,也能打得开结果了。原来不支持HTTPS的FeedBurner也支持烧录HTTPS的RSS Feed了(似乎Google还没有忘记FeedBurner这个项目,但谁知道它哪天会杀了它呢?FeedSky域名都打不开了),比如:https://feeds.feedburner.com/tumutanzi 又可以更新了。
我实现HSTS的方法由CloudFlare提供——CloudFlare不仅仅提供CDN功能,在设置中直接开启即可。使用Apache或者Nginx服务器的朋友随便Google一下应该很容易配置好。
配置好HSTS后,还可申请加入浏览器HSTS Preload List [Mozilla, Chromium],申请地址:https://hstspreload.appspot.com/,申请成功后(2015年7月28日更新:土木坛子域名成功被收录,更新2015年10月16日:Chrome更新到46版本后,土木坛子这个域名就正式开始内置强制HTTPS加密了),全球所有主流浏览器都会内嵌你的域名(Chrome, Firefox, Safari, IE 11+等),解决第一次HTTP的问题,你的域名自始至终都将自动使用HTTPS协议。
如果没有HSTS列表的话,就只能借助HTTPS Everywhere List了,已有好心人把土木坛子的域名 tumutanzi.com 收录到HTTPS Everywhere List里面了。
本博客RSS源可能无法更新
更新(2015年7月27日):因升级采用了CloudFlare的收费CDN服务,现在原生RSS应该全部恢复正常。
在其它RSS订阅服务中发现,除了Feedly和Inoreader两个服务外,土木坛子的RSS源在大部分订阅中失效了,比如AOL Reader和NewsZeit之类的订阅器。Feed Validator测试发现,本博客的RSS地址无法通过。
我估计原因,在于我使用了CDN,而CloudFlare的CDN又存在反代理,导致RSS订阅服务读取土木坛子的RSS源时,CloudFlare会拒绝访问部分User Agent的请求,从而造成RSS更新失败,甚至让人误以为本网站停止更新。
我试图用白名单的办法让Feed地址取消缓存加速,但发现也无法解决问题。为了保证网站的安全,我目前必须要使用CDN,所以Feed在大部分RSS订阅中无法获取更新的问题暂时无法解决。
我一直主张提供RSS功能,并支持全文输出,是为了让人们更高效自由地获取管理信息。这次看来无能为力、爱莫能助。虽然我没有义务解决,但还是给受到影响的朋友说声:抱歉。
更新(2015年7月18日):一个目前可行的办法是用Google的FeedBurner烧录地址 https://feeds.feedburner.com/tumutanzi 但不知Google将来会不会关闭这个项目。或者点击这里采用邮件订阅——如果你愿意的话。
再也不见,ICDSoft
前两天被DDoS攻击,然后被香港ICDSoft清理出户。我试图恢复ICDSoft的账号,但是ICDSoft客服表示,这是他们的最终决定,必须终止对我的服务,并把余下的付款退给我。
鉴于最近,有包括我在内至少三个ICDSoft客户遭遇如此情况,我有理由猜测,很可能是某些恶劣的主机同行,使用这样的手段,打压ICDSoft。我以前还以为ICDSoft能抵抗DDoS攻击呢。
土木坛子现在总算恢复过来了。目前,网站存在于美国Media Temple主机,并使用了CloudFlare的CDN服务,希望目前的这个方案能继续存活下去。这个方案的缺点很明显,除了WP Super Cache缓存有问题外,CloudFlare的CDN在国内的访问情况会有不少问题,有的地方会很慢,甚至有的地方根本就无法解析网站的IP。
还有,IE 9以下的浏览器无法浏览土木坛子了,因为Media Temple和CloudFlare的SSL都是基于SNI,IE 9以下不支持。我看了一下网站统计,IE 9以下的用户数量极少(< 1%),毕竟能访问土木坛子的网民,与IE 9以下的浏览器还是交集较少(更新:据说是Windows XP系统下的IE浏览器不支持: SNI in Internet Explorer depends upon the SChannel system component shipped with Windows Vista. 但Windows XP下的Firefox浏览器支持)。
我目前没有其它更好的办法,让土木坛子存活于自由的互联网上,是首要任务。
Leonax博友炫耀式地写了一篇博文,批评了ICDSoft的这个政策。我把这个链接丢给了ICDSoft的客服,好歹也算与它再见时,反馈一点信息。客服回复我,解释了他们为什么需要这样做:
Thank you for the input. We had to run an automated translation on the text, as we do not speak Chinese.
We are sorry, but we offer shared hosting service. This means that we host multiple customers on a single machine. We cannot allow the service for all customers on the shared machine to be down in case of possible future DDoS attacks. Such attacks are a problem for any online businesses, and we, like any other provider, strive to contain such attacks, minimizing their effects. However, some attacks are extremely severe, and there is not much we can do to fight them effectively.