博客全程启用 HTTPS 加密

2015-10-04博客通告

不见图 请翻墙

★引子


  沦陷日长假的第一天,俺打算上博客回复读者评论。通常俺会先登录到 Blogger 的管理界面,清理一下被 Google 误判为垃圾广告的读者评论。结果在管理界面的首页,就看到了 Blogger 的最新消息——HTTPS support coming to Blogspot
  可把俺高兴坏了(好几年前,俺就盼着这一天)
  在长假的头两天,俺对博客界面做了一些升级(具体下面会说)。第3天观察了一下,看大伙儿有没有碰到啥问题或 Bug,然后今天发一篇“博客通告”,跟大伙儿打个招呼。


★关于 Blogspot 的升级


  简而言之,今后搭建在 Blogspot 上的博客,都可以使用 HTTPS 方式访问。原有的 HTTP 方式依然保留,所以实际上同时支持这两种协议。
  对于博客的博主,需要先到管理界面,启用一下 HTTPS 的选项,就 OK 了。


★关于俺博客的升级


  这两天做了如下几处修改。
  (俺仅仅针对博客的【桌面版】界面进行定制。俺一直没有时间去定制【手机版】的界面

◇自动重定向到 HTTPS


  如果你以 HTTP 协议打开任何一个博客页面,俺会使用 JS 脚本自动重定向到同一个页面的 HTTPS 协议。
  因为俺是基于 JS 实现重定向,如果浏览器禁用了 JS,俺就没辙了。

◇博文中的“站内链接”替换为 HTTPS


  博客的老读者应该知道,俺经常在博文中添加交叉链接,方便你从一篇博文跳转到另一篇相关的博文。
  当读者点击某个站内链接之后,如果该链接是 http:// 开头的,在新页面打开之后,就会多增加一次跳转。为了节省大伙儿的时间,俺就预先把站内链接全部替换为 https:// 开头。
  这个功能是在博文加载时,用 JS 脚本实现的。(该功能同样需要依赖 JS 脚本)

◇评论中的“站内链接”替换为 HTTPS


  这个改造跟前一个类似。
  因为某些读者可能会在评论中贴出某篇博文的链接,而且是 http:// 开头的。俺也用 JS 脚本统一替换为 https:// 开头
  (该功能同样需要依赖 JS 脚本)

◇上述升级的好处


  经过上述改造之后,所有的站内链接都是 HTTPS 的。因此,读者在博客中浏览或者发评论时,网络流量【全都是】加密的


★HTTPS 有啥好处?


◇对于网民而言


  简而言之,HTTPS 是【强加密】滴。因此,当你浏览 HTTPS 协议的网页,从“你的浏览器”到“目标网站”之间的数据传输,都是强加密的。
  传输过程的强加密带来如下好处:
  1. 可以防止对你的上网行为的偷窥(术语称为“嗅探”)
  举例:
  俺博客的读者,大部分都在墙内,因此都是采用翻墙的方式访问本博客。原先 Blogspot 不支持 HTTPS,所以你在俺博客浏览的时候,相关的网络流量,会被翻墙工具看到。如今有了全程 HTTPS 加密,翻墙工具(包括对应的代理服务器或 VPN 服务器)就无法看到你(访问俺博客)的网络流量。

  2. 可以防范“流量注入”的攻击行为
  举例:
  天朝的某些流氓的 ISP 会在你上网的页面中植入广告。他们用的就是“流量注入”的伎俩。
  一旦你访问的网站是全程 HTTPS 加密的,ISP 就【无法】针对该网站的内容进行注入。

  HTTPS 的底层实现依赖于 TLS/SSL。具体的技术细节可以参见俺的另一个系列《扫盲 HTTPS 和 SSL/TLS 协议》(该系列尚未写完)

◇对于站长和博主而言


  除了前面提到的安全性,启用 HTTPS 还有助于 SEO。
  大约一年前(2014年8月),Google 调整了搜索引擎的算法,提升了 HTTPS 网址的权重。具体介绍参见 Google 的公告(在“这里”)。
  所以,启用 HTTPS 有助于稍微提升一下你的网站在 Google 搜索结果中的排名。
  (除了 Google,其它搜索引擎说不定也会采取类似的算法调整)


★你需要做些啥?


◇改一下浏览器书签


  如果你曾经在浏览器的“书签/收藏夹”中收录了俺博客,你需要重新修改一下博客对应的网址(把 http:// 改为 https://)
  (其实不改的话,也可以照样打开。但是会多一次跳转,多浪费了你一丁点时间)

◇碰到问题的话,给俺反馈


  这次升级之后,如果你发现博客界面或功能有啥异样,恳请给个反馈(到博客留言)。俺先行谢过。


★Blogspot 的博主可能会碰到的问题


  (如果你【不是】 Blogspot 上的博主,本节就不用看了)

◇已知的限制


  Blogspot 有一个“绑定域名”的功能。很多博主用到了这个功能,把 Blogspot 上的博客内容绑定到自己的域名。
  根据 Blogger 界面上的提示:在绑定的域名上,【不】支持 HTTPS 的访问。
  因为俺博客没有绑定到自己的域名,所以这个限制与俺无关。(当年开博时,因为担心泄露身份,没有购买自己的域名)

◇已知的 Bug


  根据俺这两天的观察,发现如下几个问题,有可能是 Blogspot 系统本身的 Bug。
  1.
  以 HTTPS 方式打开某篇博文,博文评论中的用户头像,有少数还是通过 HTTP 方式载入。这种情况下会导致浏览器给出警告(对于 HTTPS 加密页面中含有非加密的内容,比如图片,浏览器都会在地址栏显示一个警告)。
  2.
  使用 HTTPS 方式调用评论的 API,得到的 JSON 格式中,某些用户头像的网址,依然是 http:// 开头的。

  这几个问题,可能会在几天之后被修复,也可能会一直存在。
  俺等不及问题的修复,直接去改了“HTML 模板”中的一段 JS 脚本(这段脚本与加载评论有关),把头像的网址强制替换为 https:// 开头。
  如果你也碰到类似问题,可以参考俺的修改——查看俺博客页面源代码,然后搜索:Avatar URL force HTTPS (只要略懂 JS 代码,应该能看明白)


★相关的工具


◇Qualys Lab Tool


  这是一个 Web 工具,网址是:https://www.ssllabs.com/ssltest/
  该工具可以用来测试任何一个支持 HTTPS 的网站,并给出很详细的技术评估结果(包括潜在的安全隐患)。

◇HTTPS Everywhere


  经某热心读者提醒,顺便再推荐一个浏览器扩展——HTTPS Everywhere
  如果某个网站同时支持 HTTPS 和 HTTP(并且该网站包含在它的 ruleset 中),它会强制用 HTTPS 方式访问。
  该扩展同时提供 Firefox 版本Chrome 版本
  补充说明:
  为啥 HTTPS Everywhere 要依靠一个规则集,为啥不对任何网站自动检测是否有 HTTPS?其官网的回复在“这里


俺博客上,和本文相关的帖子(需翻墙)
扫盲 HTTPS 和 SSL/TLS 协议(系列)