HTTP–>HTTPS

我无法愤怒,因为不知道该生谁的气。

几天前,网站突然无法访问了,没有响应(不是reset),一开始还以为事网络的问题,后来发现不是,用其他国外主机作跳板可以正常访问,也就是说,在出国的网络出口被DROP了。

我和我们合租的邻居们不会有什么过激的言论,也没有什么PORN的内容,咋就这样了呢。没有客服,原因也没法找了,只能先恢复访问,向MT提交了support request,很快(33分钟后)就得到了的IP,应用在主机上,谁知才2天,又完蛋了。

现在要了第3个IP(这次的响应速度更快,12分钟),同时准备把所有http访问重定向到https访问,算是有些强制吧,弄了个脚本定时执行。没办法,没有别的招数,如果再被封,我也回天无术了。

使用https方式访问网站,速度上没有太大的影响(会有一点点的,服务端加密和客户端解密要耗时),关键事客户端会弹出一个非信任证书的提示,接受或者同意或者永久同意即可,FF3会出一个提示页,上面也有按钮可以添加证书为永久信任证书。如果我们每个域名都单独购买证书的话也不是不可以,不过费用不菲。

http到https的导向其实很容易,用rewrite:

RewriteCond %{HTTPS} !on [NC]
RewriteRule (.*) https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

为了使用方便,专门搞了个小脚本,在每个网站的根下添加.htaccess文件,在所有子目录现有的.htaccess文件中添加/更新这段内容。

和wordpress配合使用的时候,遇到了一些麻烦,浪费了我2天2夜的时间,也许还浪费了1个IP,如果早弄好也许第2个IP就不会出事了。这个问题就是,rewrite后重定向到https又会被重定向回http,把rewriterule仔细得看过来看过去也没找到错误,后来发现问题在wordpress上,只要在设置中把2个网站地址更改为https开头就行了。原先的转向死循环就是因为rewriterule把http转向到了https,然后wordpress发现访问地址和网站地址不一样,又给转向回了http。

如果无法进入wordpress的管理界面,也可以直接更改数据库,表wp_options中,option_name为siteurl和home这两项,option_id分别是1和46。

再次赞 (MT)的服务,鄙视国内的网络侦探。

参考

  • [Smart HTTP and HTTPS RewriteRule Redirects](http://www.askapache.com/htaccess/http-https-rewriterule-redirect.html)
  • [Administration Over SSL](http://codex.wordpress.org/Administration_Over_SSL)
  • [Force SSL](http://almosteffortless.com/wordpress/force-ssl/)
  • [让Firefox 3上的未认证ssl简单一点](http://blog.cathayan.org/item/1796)

好像其他人也有类似遭遇

  • [冰古blog](http://bingu.net/blog/515/bingu-returns/)
  • [晕死,竟然godaddy的vps的独立IP也被封!](http://bbs.idcspy.com/thread-24921-1-2.html)
  • [HTTPS for WordPress](http://wordpress.org/extend/plugins/https-for-wordpress/)

Update @ 2008-06-26

取消了强制https,原因一来感觉https消耗的资源和影响的速度比预想中的要多,二来强制也只是相对的,有点知识的就能够绕开,三来没有证书(即使购买了证书也不可能所有域名合用),麻烦多多,FF里有吓人的警告,[IE下要狂点确认](http://www.fwolf.com/blog/post/408#comment-10515),很多工具也不支持https,四来取消了强制并不代表https不可用,革命靠自觉,感觉有危险的时候用户自己就知道用https了。

3 thoughts on “HTTP–>HTTPS”

Leave a Reply to wayne Cancel reply

Your email address will not be published. Required fields are marked *