將 wordpress 強制使用 SSL 連線

Letsencrypt

繼上篇介紹 Letsencrypt 開放申請免費 SSL 憑證,就把我的 Blog 強制使用 https 連線,Wordpress 強制使用 SSL 連線有幾個步驟需要注意,底下會是搭配 Nginx 相關設定,建議如果有裝任何 Plugin,都先進去後台暫時關閉。Nginx 1.9.5 之後有把 http2 模組加入,所以本篇會是以設定 http2 為主,當然跟 spdy 設定一樣,只是換個名字而已。

資料庫相關設定

這邊可以從 WordPress 後台修改,或者是從資料庫內的 wp_options 直接改 siteurlhome 這兩個 value。

WordPress 設定檔

請打開 wp-config.php 加入底下設定

define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);

設定 Nginx

將原本 80 port 設定 301 轉到 https

server {
  # don't forget to tell on which port this server listens
  listen 80;

  # listen on the www host
  server_name blog.wu-boy.com;

  # and redirect to the non-www host (declared below)
  return 301 https://blog.wu-boy.com$request_uri;
}

server {
  listen 0.0.0.0:443 ssl http2;

  # include ssl config
  include ssl/blog.conf; 

  ....
}

比較注意的是,如果 Nginx 有設定 fastcgi_param HTTPS off;,請務必移除,否則你的 WordPress 網站會產生 Loop。最後附上在 SSllabs 驗證的截圖

Screen Shot 2015-12-18 at 1.25.30 PM SSL Server Test  blog.wu boy.com  Powered by Qualys SSL Labs