[GCloud] 在 Bitnami WordPress 網站上啟用 HTTPS

[GCloud] 在 Bitnami WordPress 網站上啟用 HTTPS

一開始在 Google Cloud Platform 上架設 Bitnami WordPress 網站時,

雖然有同時勾選 HTTP/HTTPS 支援,

但其實那只是讓防火牆允許 HTTP/HTTPS 的連線,

但如果實際去連像 https://ephrain.net 的話,

當時是會出現 Not Secure 的訊息的…

 

這是因為 Bitnami 預設放了一組 SSL 憑證 (certificate) 在網站上,

因此連到 https://ephrain.net 的時候,是使用這個憑證,

但其實這個憑證認的網址是 www.example.com,

跟 ephrain.net 對不起來,所以瀏覽器會認為這個憑證是無效的:

 

想要讓網站真正支援 HTTPS 的話,就得有自己的 SSL 憑證~

之前就知道有 Let’s Encrypt 這家公司提供免費的 SSL 憑證,

但是得自已使用 shell command 操作,才得取得憑證。

後來又看到 SSL For Free 這個網站,它把 shell command 的操作隱藏起來,

只要在網站上輸入些資料,它就能自動去 Let’s Encrypt 幫我們把憑證產生出來,

方便許多,因此今天就來用它,讓我們的 WordPress 網站支援 HTTPS 吧~

 

1. 取得 SSL 憑證

到 SSL For Free 網站上,輸入自己網站的網址,

像我輸入的是本部落格的網址 ephrain.net,

再按下 Create Free SSL Certificate:

 

(2017/09/01 註:這邊也可以輸入多筆網址,

像我後來的網址改成 ephrain.net,同時又多了一個網站 travel.ephrain.net,

就可以同時輸入 ephrain.net travel.ephrain.net,

多筆網站用空白隔開就行了~

聽說明天一月之後 Let’s Encrypt 會開放 wildcard certificate,

之後就可以用像 ephrain.net *.ephrain.net 這種格式了)

 

接下來要驗證我們確實是這個網站的擁有者,

不然阿貓阿狗都可以來申請我們網站的憑證的話,就天下大亂了~

有幾種驗證方式可以選擇,我選擇的是 Manual Verification,

就是自己放指定的檔案到網站上,

代表自己是網站擁有者,才能做這件事:

 

按下 Manually Verify Domain:

 

接著點下 Download File #1 的連結,會下載一個隨機檔案,

我們會需要將這個檔案放到網站上:

 

舉例來說,我下載下來的檔名是 ChLFVVTMUCym43RW5dTzUxNUTtkvKikYa0jLYueu1ZU,

這個檔案需要被上傳到網站下的 .well-known/acme-challenge 目錄下。

這個動作可以用 gcloud scp 指令完成,不過我那時候還沒裝好 gcloud,

所以是直接透過 Google Cloud Platform 網頁,用網頁版的 SSH 進去 VM 裡面。

 

先在 ~/apps/wordpress/htdocs 目錄下,建立 .well-known/acme-challenge 目錄:

testuser@wordpress-ephrain-vm:~/apps/wordpress/htdocs$ sudo mkdir -p .well-known/acme-challenge

 

接著用 vi 建立 ChLFVVTMUCym43RW5dTzUxNUTtkvKikYa0jLYueu1ZU 這個檔案,

檔案的內容我是直接複製貼上:

testuser@wordpress-ephrain-vm:~/apps/wordpress/htdocs$ sudo vi .well-known/acme-challenge/ChLFVVTMUCym43RW5dTzUxNUTtkvKikYa0jLYueu1ZU

 

建立好之後,用 cat 確認一下內容和我下載下來的檔案內容一致:

testuser@wordpress-ephrain-vm:~/apps/wordpress/htdocs$ cat .well-known/acme-challenge/ChLFVVTMUCym43RW5dTzUxNUTtkvKikYa0jLYueu1ZU
ChLFVVTMUCym43RW5dTzUxNUTtkvKikYa0jLYueu1ZU.dDddWtd2ohxASRSvUutlZCVBZ7Tc7-6utwkHD1b12Dg

 

這邊要注意的是每次下載下來的檔名和內容都不同,

所以要依據自己下載下來的檔案,修改上面操作的指令~

檔案放好之後,點下 SSL For Free 網站上提供的檔案驗證連結,確認檔案放置正確。

確認沒問題之後,就可以點下 Download SSL Certificate 按鈕了,

若是一切正常,就可以看到憑證建立成功的畫面:

 

由於 Let’s Encrypt 提供的憑證只有 3 個月的效期,

因此 SSL For Free 網站很貼心的提供憑證到期提醒的功能,

只要在 Get Notified of Expiration 區,

輸入 Email 和密碼來註冊一個帳號,就可以在到期前一星期收到通知:

 

下面可以找到 Download All SLL Certificate Files 的按鈕,

按下它下載我們網站的憑證與私鑰:

 

下載下來的是一個 sslforfree.zip,裡面包含了三個檔案:

  • certificate.crt:這是網站的公開憑證
  • private.key:這是憑證的私鑰,要好好保存不能公開
  • ca_bundle.crt:這是發行憑證的 CA chain 的公開憑證

 

如果把 certificate.crt 打開來看,可以看到這個憑證是給 ephrain.net 用的,

對比之前 Bitnami 網站上預設的憑證是給 www.example.com 用的:

 

2. 將 Bitnami WordPress 網站上加上 SSL 憑證

接下來要做的,就是將原本 Bitnami 上預設的憑證,

替換成我們剛申請好的正確憑證~

我們可以使用 gcloud 指令來操作 (安裝 gcloud 可參考這篇)~

 

首先先將 sslforfree.zip 解開,將解開的檔案名稱改成 Bitnami 上使用的名稱:

mv certificate.crt server.crt
mv private.key server.key
mv ca_bundle.crt server-ca.crt

 

接著將這些檔案用 gcloud scp 傳到 ~/ 目錄下

(請將 wordpress-ephrain-vm 換成你的 VM 的名稱):

gcloud compute scp server.crt server.key server-ca.crt wordpress-multisite-1-vm:~/

 

接著用 gcloud compute ssh <VM 名稱> 連上 VM,

先將舊的 SSL 憑證都先改名字,以防操作錯誤時,還能回復舊的:

cd /opt/bitnami/apache2/conf
sudo mv server.crt server.crt_ori
sudo mv server.key server.key_ori
sudo mv server-ca.crt server-ca.crt_ori

 

接著將剛剛傳上來的新的憑證檔,移到 /opt/bitnami/apache2/conf 目錄下:

sudo mv ~/server* ./

 

用 sudo vi 編輯一下 /opt/bitnami/apache2/conf/bitnami/bitnami.conf,

裡面原本就有 SSLCertificateFile 和 SSLCertificateKeyFile,

但我們得把 SSLCACertificateFile 的設定也加上去:

SSLCertificateFile "/opt/bitnami/apache2/conf/server.crt"
SSLCertificateKeyFile "/opt/bitnami/apache2/conf/server.key"
SSLCACertificateFile "/opt/bitnami/apache2/conf/server-ca.crt"

 

儲存好之後,重新啟動 Apache 服務:

sudo /opt/bitnami/ctlscript.sh restart

 

3. 驗證網站的 SSL 憑證

用瀏覽器打開 https://<網站網址>,像我的是 https://ephrain.net,

可以發現網址列上,有出現 Secure 的圖示:

 

點開來看的話,可以確認這是 Let’s Encrypt 發給 ephrain.net 的憑證:

 

以上,就已經將 SSL 憑證成功套用在網站上了,

不過這還只是可以讓使用者用 https://<網址> 的方式連進來,

之後再來研究一下讓 http://<網址> 自動跳轉到 HTTPS 網站的方法吧~

 

參考資料:

Bitnami: How To Enable HTTPS Support With SSL Certificates?

SSL For Free 免費 SSL 憑證申請,使用 Let’s Encrypt 最簡單方法教學!

Google Cloud Platform: Transferring Files to Instances

 

(本頁面已被瀏覽過 4,774 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料