IT Knowledge Base

~ Without sacrifice, there can be no victory ~

發佈日期:

如何在Amazon EC2伺服器中‧建立的XAMPP網頁伺服器‧加入『Let’s Encrypt』免費的SSL加密協議

01. 當用Google、Firefox瀏覽器瀏覽網站時,如果與網站連線沒有SSL加密,便會出現『感嘆號』題示。而Google更說明,沒有SSL加密連線的網站,在搜索排名會下跌。私人網站有在瀏覽時,出現『感嘆號』題示或搜索排名下跌也不是大問題。問題是要SSL加密連線,那張證書是需要錢買回來呢!而唔比錢又想用的情況下,便出現了這個測試文章。

02. 免費的SSL證書是有的,今次就用了『Let’s Encrypt』提供的免費證書,每次證書有效期是3個月。而網上已有特定的程式,教導如何自動更新。

03. 先題及一下今次網站的工作環境。Amazon EC2 Ubuntu伺服器,已安裝好了XAMPP,網址使用了No-IP免費網址及DNS服務。網域名稱為:nephkmail.ddns.net。

04. 要使用『Let’s Encrypt』的免費證書,首先要在No-IP DNS中,設定『A RECORD』去Amazon EC2伺服器。

05. 而因為『Let’s Encrypt』在製作證書時,需要存取網站伺服器,所以Amazon EC2伺服器的防火牆,需要打開Port 80及Port 443(這埠位在安裝證書不打開也可以,只是之後用到SSL加密連線時,也一樣需要打開其他人才能成功連線到網站)。

06. 用SSH連線到Amazon EC2伺服器。

07. 更新系統。

apt-get update
apt-get upgrade


08. 安裝『Let’s Encrypt』程式。

如果Ubuntu版本是18.04,執行:
sudo add-apt-repository ppa:certbot/certbot
sudo apt install python-certbot-apache
如果Ubuntu版本是20.04,執行:
sudo apt-get install certbot
sudo apt install python3-certbot-apache


09. 建立證書。

sudo certbot --apache -d nephkmail.ddns.net

10. 建立時,會要求輸入一個電郵地址作為證書更新時用。

11. 是否接受『Let’s Encrypt』用戶協議。

12. 是否接受『Let’s Encrypt』將你的電郵用於其他計劃上。

13. 選擇是否將http連線直接轉到https連線上。

14. 一切無誤後,網站加密證書便存放於『/etc/letsencrypt/live/nephkmail.ddns.net』資料夾內。

15. 設定XAMPP的http-ssl.conf檔案,更改以下內容。

sudo nano /opt/lampp/etc/extra/httpd-ssl.conf

將:
SSLCertificateFile "/opt/lampp/etc/server.crt"
更改為:
SSLCertificateFile "/etc/letsencrypt/live/nephkmail.ddns.net/cert.pem"
將:
# SSLCertificateChainFile ""/opt/lampp/etc/server-ca.crt"
更改為:
SSLCertificateChainFile "/etc/letsencrypt/live/nephkmail.ddns.net/chain.pem"
將:
SSLCertificateKeyFile "/opt/lampp/etc/server.key"
更改為:
SSLCertificateKeyFile "/etc/letsencrypt/live/nephkmail.ddns.net/privkey.pem"

16. 重新啟動XMAPP服務。

sudo /opt/lampp/lampp restart

17. 打開網站『https://nephkmail.ddns.net』,便會看到網站連線已被加密。

18. 最後,可以建立一個程式,定期更新『Let’s Encrypt』證書。

sudo nano /opt/auto_renew.sh

19. 程式會有少少竅門之處。因為『Let’s Encrypt』產生證書時,會安裝/用到系統中的apache服務,而同時,XAMPP也有自己的apache服務,兩者互不相干,也不能互用。所以更新程式會先停用XAMPP服務,啟動『Let’s Encrypt』預設的系統apache服務。更新後,再關閉系統apache服務,再打開XAMPP服務。

echo "Stop XAMPP service"
/opt/lampp/lampp stop
echo "Start system apache service"
/etc/init.d/apache2 start
echo "Update SSL certificates"
# for testing only, remove --dry-run for update actually
certbot renew --redirect
echo "Stop system apache service"
/etc/init.d/apache2 stop
echo "Start XAMPP service"
/opt/lampp/lampp start

20. 完成後,加入檔案執行權限。

sudo chmod +x /opt/auto_renew.sh

21. 測試檔案。

sudo /opt/auto_renew.sh

22. 設定定期執行更新,證書有效期是90天,所以用了每2個月的1號,系統時間凌晨3點作更新。

sudo crontab -e

00 03 01 Jan,Mar,May,Jul,Sep,Nov * /opt/auto_renew.sh

發佈留言

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