给WordPress换上HTTPS

https

HTTPS相比HTTP,传输上更安全,浏览者看起来也更容易信任你的内容,搜索引擎收录权重更高,至少Google是这样的,百度的不太清楚。

  1. 首先需要一个证书颁发组织给你颁发普遍受信任的证书,大多都价格不菲,好在有免费的 StartSSL,关于在StartSSL注册免费证书,就不写了,一搜一大把攻略。 我参考了这一篇
  2. 给Web Server添加 443端口的 VirtualHost ,并将申请得到的key 和 crt 配置好。

    SSLCertificateFile /xxx/server.crt
    SSLCertificateKeyFile /xxx/server.key
    我参考别人的攻略加了以上配置后,电脑上的浏览器访问都没有问题,除了Firefox,手机上的Chrome或者Safari访问,也会出来警告说证书没有被信任,后看了 [Firefox不信任StartSSL证书问题解决](http://getpocket.com/a/read/262381368 "Firefox不信任StartSSL证书问题解决") 之后得知还缺少配置,后在StartSSL重新下载两个pem文件并合并后生成新的文件,并在以上配置的基础上增加一行配置后问题解决:
    SSLCertificateChainFile /xxx/startssl.chain.class1.server.crt
  3. 给原来 HTTP协议的 VirtualHost 添加 URL Rewrite Rule,保证用户点击原有链接可以正确访问。你可以继续保留 80端口
    我的配置如下:

    RewriteEngine On
    RewriteCond %{HTTPS} !=on
    RewriteRule ^/?(.*) https://sdjkx.me/$1 [L,R=301]
  4. 在WordPress 后台管理的 『设置』->『常规』->『WordPress地址』更改为HTTPS的网址。如果你自定义过WordPress的菜单,菜单项的链接也检查一下是否还有HTTP的。

  5. 去Google Webmaster添加 https地址的新网站,将旧网站的索引信息等迁移到新的网站上来。百度站长哪里不用管,它是识别域名的,不关注协议。
  6. 重新生成你新的sitemap,提交到 Google Webmaster
  7. 如果你之前有和别人交换过链接,及得提醒他们更新地址。
     

通过以上步骤,网站替换HTTPS的过程就结束了,看着浏览器地址栏里的小绿锁是不是心情大好?

等等。。。

怎么没有小绿锁。。。

 

如果你使用了一些插件、或者页面引用了其他网站的 使用了http协议的脚本或者图片什么的,就不会出现小绿锁了,浏览器会提示你该页面中混合了不安全的内容,并阻止了这些不安全的内容在浏览器中加载,所以可以能会出现一些css失效之类的问题。 可以 F12 ,然后刷新页面看看引用了那些资源,然后想办法将这些资源链接更换为 https的。

我的blog中存在以下使用http协议的资源:

  • fonts.useso.com 这是360的前端公共库CDN地址,据了解360不提供https的CDN服务。好在只是几个公共字体,修改css改为本地。
  • 多说评论的js以及头像。 其中 的 embed.js 已经支持 https了,但那些评论用户的头像图片地址都是不支持的,去多说论搜索看到很多人反馈这个问题,目前多说可以确定不能完美支持https。 所以我后续会将其更换为 Disqus,Disqus支持 HTTPS。
     

StartSSL的免费证书支持 一个二级域名和一级域名,我申请了 sdjkx.me 和 t.sdjkx.me 两个地址,共用一个证书。