前言
WordPress 的第一篇文章,紀錄使用 Gandi + GCP + Cloudflare 建立自訂域名的 WordPress 的過程。
購買網域 – Gandi
- 申請 Gandi 帳號
- 在 Domains 的頁面中輸入希望購買的域名(domain name)
- 按照網站的流程進行支付,如果有折扣碼記得在結帳時輸入
- 購買完成後,帳號的信箱會收到確認信
架設 WordPress – 使用 GCP
- 申請 GCP 帳號
- 在 GCP console 的 Marketplace 搜尋 WordPress
- 選擇 WordPress with NGINX and SSL Certified by Bitnami
- 安裝完成後,畫面上會顯示 WordPress 的 IP address、User 與 Password
- 登入 WordPress 的後台,新增或修改 User 或 Password
- 回到 GCP console,前往 VPC network 底下的 External IP addresses
- 將分配給「架設 WordPress 的 VM」的暫時性 IP address 設定為 static IP address
管理 DNS – 使用 Cloudflare
- 申請 Cloudflare 帳號
- 填寫需要使用 Cloudflare 服務的域名,例如 yjyw.info
- 選擇免費方案(Free plan)
- Cloudflare 會取得域名的 DNS(domain name server)紀錄(record)並列出,這邊需要確認的是否存在兩個 Type A 的紀錄
- 舉例來說,我們希望看到 www 與 yjyw.info 這兩筆紀錄,若無可以手動新增,並且在 Value 的欄位輸入 GCP WordPress VM 的 static IP address,建立完成後記得將右側的雲朵開啟(橘色),這樣 Cloudflare 才能處理通往該域名的流量
- Cloudflare 會提供兩個 DNS 伺服器,我們需要到管理該網域的公司的網站上,用這兩個伺服器替換掉原本的伺服器
- 舉例來說,我們的 yjyw.info 是在 Gandi 上購賣與管理,所以需要到 Gandi 網站 Domains 頁面,選擇 yjyw.info,再選擇 Nameservers,這邊可能會看到三台 DNS 伺服器,將 Cloudflare 提供的兩台填寫進來,並且將多餘的一台移除後再儲存即可
SSL 憑證 – 使用 Cloudflare
- 申請 Cloudflare 帳號並設定網域後,進入 Crypto 的頁面,會看到 Universal SSL Status 的狀態,如果尚未顯示 Active Certificate 的話,代表 SSL 憑證正在建立中
- 官方的說法是付費方案約 15 分鐘,免費方案最多需要等待 24 小時
- 在等待的同時,因為我們希望將所有連向網站的流量都導向 https,所以需要前往 Page Rules 的頁面進行設定
- 如果不使用 Cloudflare 的話,需要自行在 NGINX 的設定檔進行設定
- 在 Page Rules 的頁面選擇 Create Page Rule
- 在 Add a Setting 的地方選擇 Always Use HTTPS,並且在網址的地方填入 http://*yjyw.info/*
- 設定完成後,所有流向 yjyw.info 的 http 流量,都會被 Cloudflare 導向 https
- 回到 Crypto 的頁面,當 Universal SSL Status 的狀態顯示為 Active Certificate 時,嘗試在瀏覽器中開啟網站的 http 網址,例如 http://104.155.209.114 或 http://104.155.209.114,會發現開啟的網站被導向 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) 的功能,可以依照以下的方法做到:
- 建立網站伺服器的 public .csr 與 private .key:openssl req -nodes -newkey rsa:2048 -sha256 -keyout myserver.key -out server.csr
- 前往 Crypto 的頁面,選擇 Origin Certificates 建立網站伺服器用的憑證
- 選擇 I have my own private key and CSR,並且將步驟一產生的 CSR 檔案的內容貼上
- 檢查 List the hostnames 的值是否包含我們希望保護的網域
- Choose how long before your certificate expires 可以選擇憑證的有效期限,預設是 15 年,可以依照需求調整與縮短
- Key format 使用預設的 PEM 格式,Web Server for Installation 依照網站安裝的服務做選擇,我們選擇 NGINX
- 將 Origin Certificate 的內容複製下來並存到網站伺服器中,檔名可以用 .pem
- 依照 Cloudflare 的說明:How to install an Origin CA certificate in NGINX 進行設定
- 參考 Sammy’s Blog 的方法,使用指令重新啟動 NGINX:sudo /opt/bitnami/ctlscript.sh restart nginx
- 回到 Cloudflare 的 Crypto 頁面,將 SSL 設定為 Full (strict)
- 在瀏覽器開啟網站,不會再看到 Error 526: Invalid SSL certificate 的訊息了!
發佈留言