[WP] 透過bitnami在Google cloud platform上架設自動更新憑證的wordpress

最近Bitnami針對於Google Cloud Platform(GCP)平台新增了一個Wordpress IMAGE(映像檔),名為「WordPress with NGINX and SSL」,這個映像檔完全整合了Wordpress+NGINX+SSL這三個安裝方案,透過簡單的幾個步驟即可完成設定。這個映像檔最主要的特色是在可以自動更新SSL憑證(採用Let’s Encrypt方案),而不需在憑證到期時另外下載憑證匯入安裝,減少了憑證安裝/更新的不便性。

【在Bitnami安裝WordPress】

Bitnami網站 https://google.bitnami.com/

安裝Bitnami的過程,新增虛擬主機時請選擇「WordPress with NGINX and SSL」映像檔。

安裝完成後,先回到GCP設定固定IP,另外設定網址A記錄的對應,以目前我的網站為例,設定「test.sammy197.tw」網址對應到「35.186.179.201」。另外也可以回到GCP調整CPU的設定,預設是使用g1-small (1 個 vCPU,1.7 GB 記憶體),可以依需求進行調整。

安裝完成後,直接輸入https://DomainName(https://test.sammy197.tw),出現的卻是不安全的網站訊息是正常的,因為我們還沒開始設定憑證啊,但至少可以驗證網址有對應到正確的IP。

【設定SSL憑證及自動更新】

參考Bitnami說明文件,透過Bitnami開啟SSH模式,如下紅框處。

開啟SSH視窗後,輸入以下指令產生憑證檔,留意「YOURMAIL(電子郵件地址)」及「YOURDOMAIN(網址)」需以真實的資料進行取代,如下圖紅框部份。

sudo /opt/bitnami/letsencrypt/scripts/generate-certificate.sh -m YOURMAIL -d YOURDOMAIN

此時會問你是否繼續,請輸入「Y」之後再Enter即可。請忽略上面寫的for the domain部份,因為那邊應該要帶入domain而非mail。

此時系統詢問你是否同意Let’s Encrypt的服務條款(Terms Of Service,TOS),請輸入「Y」之後再Enter即可。

系統已完成憑證申請設定,並已更新到GCP主機中,系統問你是否要透過cronjob(類似windows裡面的工作排程管理員)自動更新憑證,此部份一樣輸入「Y」之後再按Enter即可。

註:若在這個步驟沒有輸入Y進行自動更新,後續可以自行透過「crontab -e」指令進入cronjob設定作業,選擇「1」以nano的方式進行新增。

新增以下指令後進行存檔即可,留意「YOURMAIL(電子郵件地址)」及「YOURDOMAIN(網址)」需以真實的資料進行取代。

* * 1 * * sudo /opt/bitnami/letsencrypt/lego --path="/opt/bitnami/letsencrypt" --email="YOURMAIL" --domains="YOURDOMAIN" renew && sudo /opt/bitnami/nginx/sbin/nginx -s reload

設定好憑證及自動更新後,可以開啟瀏覽器輸入「https://YOURDOMAIN」進行連線測試,若沒有出現憑證錯誤訊息或是檢視網站憑證相關資訊,即可確認是否設定成功。

【強制以HTTPS顯示WordPress網站@NGINX】

設定好SSL憑證後,雖然可以透過https(443 port)的方式進行連線,但同時網站卻仍可以用http(80 port)進行連線,如此一來其實並沒有完全達成以安全方式進行連線的目的。雖然之前以Apache可以透過修正「.htaccess」檔案強制以https進行連線(參考這篇文章設定),但這次是使用「NGINX」的環境,沒有「.htaccess」檔,而需透過其他的方式進行修正。

一樣進到SSH視窗,輸入以下指令修正bitnami的config檔。

sudo nano /opt/bitnami/nginx/conf/bitnami/bitnami.conf

把HTTP server及HTTPS server中的localhost的部份修正為YOURDOMAIN,另外在HTTP server中再加一行return 301指令,下面修正前/後的對照圖,YOURDOMAIN的部份以test.sammy197.tw為例。

return 301 https://YOURDOMAIN$request_uri;

修正前:

修正後:

修正完成存檔後,輸入以下指令重新啟動NGINX。

sudo /opt/bitnami/ctlscript.sh restart nginx

後續只要透過 http://YOURDOMAIN的方式,皆會自動導向https://YOURDOMAIN進行連線。

只要透過這幾個步驟的設定,輕輕鬆鬆即可完成自動更新SSL的WordPress。