站点迁移到HTTPS的高级别部署计划
发布日期:2018-02-28将你的站点迁移到HTTPS可能会非常困难,这真的相当困难。有无数种不同的方法来执行你的迁移,也有多种不同的工具和技术可以帮助你完成平稳过渡。以下是一个高级别的部署计划,它可以帮助你全面考虑成功部署HTTPS所需要涉及的各个方面。
为什么要迁移到HTTPS?
因为现在已经是2018年了,所以你真的应该马上去做!不支持HTTPS的页面可能不会带有密码或信用卡的详细信息,但它们仍然是以下攻击行为的首要目标:这些攻击包括被动监视、广告以及恶意软件注入、针对其他网站的加密攻击犯罪行为和一般攻击行为。我们将向另一边的浏览器发送一个页面,并且我们希望确保到达另一边的确实是我们所发送的页面。我在《现在还认为你不需要HTTPS吗?》这篇文章中还提到了更多的理由,如果你还未完全信服的话,你可以去看看我的这篇文章。
通往HTTPS的六步“快乐之路”
Troy Hunt在博客上写过一篇很棒的文章, 《通往HTTPS的六步“快乐之路”》 ,这篇文章对于初学者来说是是非常好的,它给出了关于我今天将要探讨的一些事情的梗概。但是,根据你想要迁移的网站的情况,可能还会有一些略微深入一些的技术因素需要考虑,而这正是我今天要深入探讨的东西。
准备工作
正如Troy在其文章中所提到的,使自己的网站具备正确提供“https://”服务的技术能力的两种最简单的方法分别是使用Cloudflare或Let's Encrypt。在两者中怎样选择,很大程度上取决于你的网站自身的基础设施的情况,但如果你现在正打算花大把现金从证书颁发机构买断证书的话,那么我强烈建议你退而求其次,考虑用Let's Encrypt作为替代品。(沃通CA新版免费SSL证书面向全球开放申请,支持所有浏览器,支持1年期单域名。)
一旦你具备了提供HTTPS服务的能力,你就需要确保所有的内容都支持HTTPS。这可能会特别困难,尤其是在你有很多像新闻站点这样的遗留内容的情况下,因为在你的整个数据库中做字符串替换对你来说可能不是很容易。正如Troy在他的文章中提到的,有两种很棒的技术可以帮助你,这两种技术就是HSTS和CSP。我以前讨论过通过CSP对混合内容进行修复,我写过CSP简要说明书,这可以帮助你上手,当然我还写过HSTS简要说明书。这两种机制可以非常好地帮助你进行迁移,我甚至写了一篇专门针对它们的博客文章, 《从HTTP迁移到HTTPS?用CSP和HSTS来减轻你的痛苦吧!》 。该文章的主要观点是,一旦你迁移到了HTTPS,你就必须对混合内容进行修复,我们非常有信心完美地解决这个问题。
Referrer属性的值
另一个需要考虑的因素是来自你的站点的外部链接。想象一下,你是一个巨大的在线目录,例如英国的Yell,而你最重要的指标之一就是有多少人或多少流量从你的网站点击进入另一个网站。被链接到的站点将跟踪这些引用,而且很可能是在用户点击后通过浏览器发送的referrer头信息进行引用的,但是如果你的站点现在使用的是HTTPS,而目标站点使用的是HTTP,那么可能就需要考虑一些因素了。你需要考虑在你的站点上设置一个引用策略,以确保将足够的信息发送到目标站点,不过也许你根本不关心这个问题,而且你还希望保证在referrer头信息中没有任何数据被发送。只有你的环境可以决定对你来说正确的配置是什么,但是你的确需要从中选择一个方案并进行部署。
切换开关
即使你做好了所有的准备工作,你的站点已经可以支持HTTPS,所有的混合内容都已经整理好,引用策略也设置好了,那么你要如何从http过渡到https呢?有几种不同的方法可以做到这一点,和通常一样,每种方法都有自己的优势。
核按钮
如果你确信一切都很顺利,而且没有任何问题了,那么你就可以把HTTPS开关打开了。在收到任何HTTP请求时,你的网站都将立即显示301错误,并将页面重定向到HTTPS模式。你的网站的所有通信都将立即开始使用HTTPS,但这是一种过于直接而且风险较大的方法,一点一点地迁移可能会更好一些。
HTTP/HTTPS混合
另一种选择是把你的网站的HTTPS版本放在网上,但不要在一开始就将访问请求重定向到HTTPS版本上。这意味着你的大部分流量仍然会访问网站的HTTP版本,但是你可以选择性地将你的一部分用户重定向到HTTPS版本上,以便进行测试,或者只是在电子邮件、社交媒体等版块中逐步地将HTTPS链接加入到你的网站。这样的话,即使出现了问题,也只会暴露给你的一小部分用户,你还有时间在影响变得过大之前纠正这些错误。这里有搜索引擎优化方面的考虑,我并不是这方面的专家,但是我知道你可以让自己的网站在短期内使用两个不同的URL,而规范版本仍然使用HTTP。
HTTPS的不同路径
对于一些较大的站点来说,其不同版块可以由完全不同的团队运营。英国广播公司的网站就是一个很好的例子。他们有bbc.co.uk、bbc.co.uk/news和bbc.co.uk/sports这些版块,分别由不同的团队运营。体育版块可能已经率先做好了迁移到HTTPS的准备工作,而与其等待网站的其它版块做好准备,还不如先将体育版块的所有页面重定向到HTTPS上,并迁移该版块的内容。这当然会使部署HSTS变得困难,因为它是在整个域内运行的,但这仍然是正确的一步。
其它考虑
当你正在或者已经将你的站点迁移到HTTPS时,你还有一些其他的事情需要考虑,你需要确保完成了全部的迁移工作。你需要在谷歌站长工具上更新你的网站地图、登录界面,你需要在HTTPS上设置你的网站,更新社交媒体资料和链接、电子邮件签名以及任何你可以控制的指向你的网站的链接,以避免其继续使用HTTP。
如果在你的网站上有任何第三方的依赖关系,你需要确保它们都可以安全地通过HTTPS访问,否则你将会被混合内容所困扰,或者不得不在缺少这些依赖关系的情况下运营你的网站。这些内容可能包括广告、任何从内容分发网络上加载的东西或者从第三方集成的东西等等。