本WordPress博客内容现已完全沉浸在SSL保护之中

访问本站的筒子们有没有发现地址栏上优雅动人的绿色小锁呢(昨天还是黄色小三角形)?:D 现在您在本站访问的全部内容都通过HTTPS传输了哦~通过http协议访问也会被直接跳转到https(除网络爬虫和IE 9以下用户)。

想知道怎么做到的吗?嗯,本文就是来分享一下的。大体上都可以照着底下给出的参考文章来操作,我在这里补充一些细节。

关于StartSSL

在StartSSL注册的时候个人信息(包括地址、电话等)必须是个人信息,不能是公司、机构等地址(免费套餐限定个人使用)。建议在VPS上生成私钥crt和那个包含了信息的csr文件,然后直接让StartSSL生成公钥、Chainfile(sub.class1.server.ca.pem),这样速度会快一点(我这里访问StartSSL速度比较慢)。

挫人如我,忘记在Apache的ssl.conf里设置SSLCertificateChainFile了,所以之前Android设备访问会提示证书有问题,现在已经搞好了。SSLCertificateChainFile就是最后从StartSSL那里下载得到的sub.class1.server.ca.pem!

使用VirtualHost功能需注意的事情

StartSSL只签了顶级域名和一个子域名,因此在Apache中配置使用了VirtualHost分管不同子域名时一定要注意ssl.conf配置写好ServerName和ServerAlias,不要给没签名的域名用SSL证书。

批量替换图片链接

WordPress中把站点地址什么的都改成https开头,这个时候访问还是会有个黄色小三角形,因为图片资源的链接还是旧的(http协议)。用协议级路径解决是最佳之策,即把前面的http和https头都去掉,直接用两个斜线//开始。下面讲一下命令行下操作mysql把图片链接批量替换。

USE wordpress;
UPDATE wp_posts SET
post_content = replace(post_content, 'http://www.librehat.com', '//www.librehat.com');

这样一来就把判断协议的任务交给了浏览器(不用担心支持问题,IE6都支持协议级路径访问)。上述命令执行完毕后图片的链接就会自动跟着当前访问协议走了(当前是http://,图片就是http://,当前是https://,图片就是https://)。

另外就是https的跳转,在.htaccess里(里面)加入下面这几行:

RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{HTTP_USER_AGENT} !(baiduspider|soso|bing|sogou|yahoo|sohu-search|yodao|robozilla|msnbot|feedburner) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !MSIE/[1-8]\. [NC]
RewriteRule ^.*$ https://www.librehat.com%{REQUEST_URI} [L,R]

记得把https://www.librehat.com替换成你自己的域名。另MSIE这里我是默认IE8及以下版本的不跳转到https,你也可以设置成别的IE版本(因为IE9之前的版本提示那个含有不安全内容的框非常烦人)。

插句题外话,我把这个TwentyThirteen的style.css改掉了,基本参考fedoraproject.org的配色方案改来,蓝色系不要养眼太多!

参考文章:Apache + WordPress + SSL 完全指南

7 responses to “本WordPress博客内容现已完全沉浸在SSL保护之中”

  1. Harry avatar

    我的不行啊…

    1. librehat avatar

      什么不行?

  2. Dimpurr avatar

    StartSSL 确实是中小站点领证的福音啊 ……

    1. librehat avatar

      嗯,要不是StartSSL估计很多站点都无福消受https

      1. Dimpurr avatar

        报告个 Bug ,在安卓手机上访问经常会报此安全凭证有问题,是否继续……

        1. librehat avatar

          Bug已经修复……我以为不用指定SSLCertificateChainFile的,结果不指定的话Android就报错。