Select Page

前言

WordPress 的第一篇文章,紀錄使用 Gandi + GCP + Cloudflare 建立自訂域名的 WordPress 的過程。

購買網域 – Gandi

  1. 申請 Gandi 帳號
  2. 在 Domains 的頁面中輸入希望購買的域名(domain name)
  3. 按照網站的流程進行支付,如果有折扣碼記得在結帳時輸入
  4. 購買完成後,帳號的信箱會收到確認信

架設 WordPress – 使用 GCP

  1. 申請 GCP 帳號
  2. 在 GCP console 的 Marketplace 搜尋 WordPress
  3. 選擇 WordPress with NGINX and SSL Certified by Bitnami
  4. 安裝完成後,畫面上會顯示 WordPress 的 IP address、User 與 Password
  5. 登入 WordPress 的後台,新增或修改 User 或 Password
  6. 回到 GCP console,前往 VPC network 底下的 External IP addresses
  7. 將分配給「架設 WordPress 的 VM」的暫時性 IP address 設定為 static IP address

管理 DNS – 使用 Cloudflare

  1. 申請 Cloudflare 帳號
  2. 填寫需要使用 Cloudflare 服務的域名,例如 yjyw.info
  3. 選擇免費方案(Free plan)
  4. Cloudflare 會取得域名的 DNS(domain name server)紀錄(record)並列出,這邊需要確認的是否存在兩個 Type A 的紀錄
  5. 舉例來說,我們希望看到 www 與 yjyw.info 這兩筆紀錄,若無可以手動新增,並且在 Value 的欄位輸入 GCP WordPress VM 的 static IP address,建立完成後記得將右側的雲朵開啟(橘色),這樣 Cloudflare 才能處理通往該域名的流量
  6. Cloudflare 會提供兩個 DNS 伺服器,我們需要到管理該網域的公司的網站上,用這兩個伺服器替換掉原本的伺服器
  7. 舉例來說,我們的 yjyw.info 是在 Gandi 上購賣與管理,所以需要到 Gandi 網站 Domains 頁面,選擇 yjyw.info,再選擇 Nameservers,這邊可能會看到三台 DNS 伺服器,將 Cloudflare 提供的兩台填寫進來,並且將多餘的一台移除後再儲存即可

SSL 憑證 – 使用 Cloudflare

  1. 申請 Cloudflare 帳號並設定網域後,進入 Crypto 的頁面,會看到 Universal SSL Status 的狀態,如果尚未顯示 Active Certificate 的話,代表 SSL 憑證正在建立中
  2. 官方的說法是付費方案約 15 分鐘,免費方案最多需要等待 24 小時
  3. 在等待的同時,因為我們希望將所有連向網站的流量都導向 https,所以需要前往 Page Rules 的頁面進行設定
  4. 如果不使用 Cloudflare 的話,需要自行在 NGINX 的設定檔進行設定
  5. 在 Page Rules 的頁面選擇 Create Page Rule
  6. 在 Add a Setting 的地方選擇 Always Use HTTPS,並且在網址的地方填入 http://*yjyw.info/*
  7. 設定完成後,所有流向 yjyw.info 的 http 流量,都會被 Cloudflare 導向 https
  8. 回到 Crypto 的頁面,當 Universal SSL Status 的狀態顯示為 Active Certificate 時,嘗試在瀏覽器中開啟網站的 http 網址,例如 http://35.229.203.132http://35.229.203.132,會發現開啟的網站被導向 https 的網址,且在網址列的左側可以看到 SSL 啟用的鎖頭

啟用 Cloudflare SSL 的 Full (strict) 功能

Cloudflare SSL 分為四種類型:Off、Flexible、Full 與 Full (strict),除了開關 SSL 之外,主要是設定 當 Cloudflare 的伺服器要處理 https 的 requests 時,使用哪一種方法與網站的伺服器連線(原文:What do the SSL options mean?

Cloudflare 官方推薦用 Full (strict) 的功能,但是若沒有在網站伺服器上做好設定就直接開啟,瀏覽網站時,Cloudflare 會回報 Error 526: Invalid SSL certificate 的訊息。

為了讓網站支援 Full (strict) 的功能,可以依照以下的方法做到:

  1. 建立網站伺服器的 public .csr 與 private .key:openssl req -nodes -newkey rsa:2048 -sha256 -keyout myserver.key -out server.csr
  2. 前往 Crypto 的頁面,選擇 Origin Certificates 建立網站伺服器用的憑證
  3. 選擇 I have my own private key and CSR,並且將步驟一產生的 CSR 檔案的內容貼上
  4. 檢查 List the hostnames 的值是否包含我們希望保護的網域
  5. Choose how long before your certificate expires 可以選擇憑證的有效期限,預設是 15 年,可以依照需求調整與縮短
  6. Key format 使用預設的 PEM 格式,Web Server for Installation 依照網站安裝的服務做選擇,我們選擇 NGINX
  7. 將 Origin Certificate 的內容複製下來並存到網站伺服器中,檔名可以用 .pem
  8. 依照 Cloudflare 的說明:How to install an Origin CA certificate in NGINX 進行設定
  9. 參考 Sammy’s Blog 的方法,使用指令重新啟動 NGINX:sudo /opt/bitnami/ctlscript.sh restart nginx
  10. 回到 Cloudflare 的 Crypto 頁面,將 SSL 設定為 Full (strict)
  11. 在瀏覽器開啟網站,不會再看到 Error 526: Invalid SSL certificate 的訊息了!