本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 完全指南

Author: librehat

自由軟體萬歲!

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

Comments are closed.