如何为Drupal快速添加SSL支持
浏览器地址栏上的上的锁头图标,也就是https,经常让新手感到困惑。他们的第一反应就是“应该有个模块干这个”,事实上Drupal的确有些模块跟https有关的,不过还有一些更简单的方法。
无需模块,只要改改.htaccess文件
最简单的添加全站https支持的方法就是编辑站点的.htaccess文件。只要加入几行内容,无需模块支持就可达到目标。
你可以在’Rewrite Engine on’下添加这几行内容。我通常把这些内容放到#
开头的主干内容下面,让所有来访用户访问www前缀,注意,如果已经启用了前缀相关的功能,可能会有冲突,请选择性的屏蔽冲突代码:
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
上面的代码在没有试用https访问网站的时候,转向https,并在没有www前缀时候添加www前缀。
为什么全站https是一个新方向
Google说过,安全是第一优先。每个站点可能都应该遵循这一思路。21世纪的人们对于个人信息的搜集和分享非常敏感,尤其是经过近期的几次安全漏洞之后,人们需要更多的安全感。
过去不采用https的一个理由就是,所有服务器和浏览器之间的数据都需要进行加密。在过去,服务器性能远落后于当今水平,多数Internet连接为56K的电话解调器方式,这一理由是成立的;但今天,同一个站点,很难在SSL和非SSL版本站点之间感觉到不同的延时。如果你对这个性能问题感觉疑惑,可以参考网站is TLS fast yet?。
另外一个全站SSL的好处就是SEO。根据Google的说法,会给SSL/HTTPS站点更高的评级。虽然这一提升不算大,蚊子虽小也是肉吧。
Drupal的HTTPS相关模块
在访问电子商务或者一些网站的个人区域时,http和https之间的切换会造成一些小问题,Drupal提供了一些模块来解决这些问题:
Secure Pages
在Drupal 6时代,我利用这个模块引导浏览者使用https。他提供了一个简单的界面,用来定义安全和非安全路径,以及一些其他内容:
在Drupal 7中,需要打一些内核补丁才能正常工作。因此需要额外的一些时间来验证他的切换工作是否正常,另外因为对补丁的需要,所以每次更新Drupal后,都需要重新打补丁。(这就是一废物模块)
其他的Drupal SSL模块
还有一些其他的SSL相关模块
Custom SSL redirect
和Secure Pages模块有些相似,但是他只是让用户定义安全和非安全页面。注意安装这个模块的时候,他会自动尝试转向到HTTPS,如果你的服务器没有启用SSL,会造成持续的错误,会把用户拒之门外,只能靠Drush禁用该模块。
Ubercart SSL
这个模块用来保障所有Ubercart的路径通过https进行。
Secure Login
这个模块首先让用户登录Form强制使用https,也可以更进一步让其他Form也使用Https。
在https和http之间切换可能产生的问题
我观察到Ubercart和Drupal Commerce在切换时会丢失check out信息,这导致用户的购物车在切换之后变成空的。这个问题很讨厌,通常是一个配置问题导致的(屁配置问题,http和https是两条不同的session),当然,在全站SSL的情况下就不会发生了(你真机智)。
到哪里买便宜的SSL认证?
我假设你或者你的主机提供商已经安装了SSL证书,如果没有的话,就需要购买一套,才能完成上面讲的工作。
过去我习惯购买每年80-300美金的认证服务。不过现在可以买到每年五美金的认证了。
作者的广告:http://ssls.com,5$每年
译者的广告:startssl.com,免费。
当然,还是可以购买高价的认证服务,以其获得更高的认证标准,这也意味着更长的申请时间,以及面临因认证造成损失的时候,可以得到更高的赔付。
最后,更昂贵的认证,在你浏览该网站时,地址栏会有不同样式的锁图标,以及不同的背景色展示。
结论
总之,全站https的应用很简单,而且对于站点的安全,用户的安全,以及SEO都有好处。我乐于进行任何这方面的讨论,请在下面留言。
POODLE漏洞
最近(2014年10月)发现了一个重大安全问题,命名为POODLE,影响了SSLv3。SSLv3是一个过时的协议,但是很多网站还在继续使用,下面提供一个工具用于检测站点是否受到这一问题的威胁:
https://www.ssllabs.com/ssltest/index.html
首页打不开了
我按照上面说的改了.htaccess文件,确实是变成了https://localhost/drupal
但是首页打不开了,我便把刚刚的添加的去掉了,首页还是https,没有变回http。我都把刚刚加的删掉了,怎么叫主页再出来?