服务器正式启用 HTTPS 啦

经过几天的修改与测试,现在本站正式启用 HTTPS 啦,但是由于 Apache 的版本原因,还没有启用性能更高的 SPDY 或 HTTP/2,但是,服务器配置由 Apache Prefork MPM + mod_php 的架构改进为 Apache Event MPM + mod_proxy_fcgi + PHP-FPM。更新后的架构服务器响应速度会更快一些,占用内存也更少一些。
迁移最麻烦的就是更改指向 HTTP 的链接了。在火狐浏览器中,如果 HTTPS 网页引用了 HTTP 的“混合被动/显示内容”(如图片、音乐、视频等),虽然内容可以被正常加载,但是地址栏中显示“锁”的地方会被“感叹号”代替;如果引用了“混合活动内容”(如脚本、样式表等),则内容无法正常加载,而且还会在地址栏中多出一个“盾牌”图标,表示内容已被阻止。解决办法只有一个,那就是修改网页上的 HTTP 内容,让其指向 HTTPS 内容。现在,网站上大部分链接都被改正正确了,但是肯定还有少量漏网之鱼。

p.s.  其实我启用 HTTPS 的重要原因之一是阿里云似乎动不动就会封锁某些内容。启用 HTTPS 之后,它只能封锁整站,而不能封锁单个网页了。

发表在 计算机技术 | 留下评论

测试 Let’s Encrypt 颁发的 HTTPS 证书

Let’s Encrypt 是 2015 年底开放公测的一个项目,旨在为互联网上所有网站提供免费的 HTTPS 证书。为网页服务器启用 HTTPS 加密,不仅可以增强网络链接的安全性和保密性,也可以通过 SPDY 与 HTTP/2 加速网页的传输速度。很久之前我就想为我的服务器启用 HTTPS 了,但是因为从 HTTP 迁移到 HTTPS 比较麻烦,Let’s Encrypt 的服务器 BUG 不断,所以一直拖了下来。今天我为我的域名申请到了证书,并用此证书运行了一个简单的测试页面,现在可以通过 https://www.zbyzbyzby.com 测试 HTTPS 证书了。等我有时间之后,我再在把整个网站迁移到 HTTPS。

p.s. #1  从 HTTP 迁移到 HTTPS 并不像想象得那么简单,由于浏览器对混合内容的禁止策略,即使做了跳转,在很多情况下 HTTPS 的页面也不能直接引用 HTTP 内容。迁移需要改掉页面上的大多数链接,很烦人。
p.s. #2  Let’s Encrypt 项目还不稳定,而且它的证书有效期只有 90 天,需要频繁地重新申请,我决定先测试一段时间,如果没有太大的意外再迁移。
p.s. #3  Let’s Encrypt 签出的证书目前不支持 Windows XP SP3 系统(IE, Chrome, Opera 等浏览器),有一定的局限性。但 Firefox 浏览器除外,因为 Firefox 使用自己实现的加密套件,不受系统的影响。支持系统列表

发表在 计算机技术 | 留下评论

为 Apache 启用 gzip 时需要注意 ETag 的配置

网上为 Apache 启用 gzip 压缩的教程一抓一大把,然而很少有提及在启用 gzip 时需要注意 ETag 的配置的。由于 Apache 的设计原因,gzip 与 ETag 不能很好地一起工作。例如有很多本应该发送 304 Not Modified 的回应,在启用 gzip 后,会发送 200 OK 的回应。这样一来,原本无需发送数据的请求变成了需要发送数据的请求,相当于抵消一部分开启 gzip 减少网络流量的作用。当然,针对这个问题解决方案有很多,但是都不尽完美。我选择的是直接禁用对文件的 ETag,即在服务器配置文件中加入一句 FileETag None。这样一来,服务器便会用时间来判定是应该发送 304 回应还是 200 回应,避免了错误的回应消耗网络流量。

参考资料: StackOverflow 上的问答  Bug 39727  Bug 45023

发表在 计算机技术 | 留下评论

服务器正式启用 IPv6 啦

最近几天,我为服务器配置了 IPv6,域名也添加了 AAAA 记录的解析,也就是说我的网站终于支持 IPv6 了。当然,由于阿里云并不支持原生的 IPv6,我采用了美国 Hurricane Electric 公司提供的隧道方式接入 IPv6,因此所有流量都要在中国与美国之间绕一圈。据我测试,以这种方式接入 IPv6 的带宽还可以,服务器 2 Mbps 的上传是可以跑满的;然而延迟方面就不乐观了,大概在 350ms 左右。

我最初尝试使用 6to4 的方式接入 IPv6,不过测试下来不论是带宽还是延迟都非常不理想,只好放弃了。后来我发现,几乎所有的教育网 IPv6 出国流量都被发往了美国 HE 公司,出于减少延迟的考虑,我便申请了它免费提供的 Tunnel Broker 服务,使用 6in4 隧道方式接入 IPv6。在 CentOS 服务器上的配置我是参考了这篇文章

发表在 计算机技术 | 留下评论

将 iPad 2 固件降级到 iOS 6.1.3

前几天,有越狱大神发布了 OdysseusOTA 工具,它可以将已越狱的 iPhone 4s 通过 OTA 方式刷写 6.1.3 版本的固件。目前,这个工具对 iPad 2 的支持还没有完成。事实上,几个月前,就有人发现了可以将 iPad 2 降级到 iOS 6.1.3 的方法,不过这种方法所需要的条件更加严苛:需要用到 4.x 固件的 shsh 以及 5.0.1 固件的 shsh;而 OdysseusOTA 工具只要求机器正在运行已越狱的固件即可,无须任何 shsh。

具体步骤:

  1. 确认你拥有 iOS 4.x 以及 5.0.1 的 shsh。
  2. 利用 redsnow 0.9.15b3 将 iPad 2 降级到 iOS 5.0.1。此过程需要对应的 iOS 4.x 以及 5.0.1 的固件。
  3. 在 iPad 上检查 OTA 更新,它应该显示存在 6.1.3 的 OTA 更新。直接更新即可。
发表在 计算机技术 | 留下评论