隨著網路攻擊手法越來越複雜,
SSL/
TLS 加密成為提升網站安全的基本手段。WordPress 平台本身已內建多種安全加固功能,但若要在 Apache 環境下直接部署 Let’s Encrypt 的免費憑證,最方便且高效的方式便是使用 Certbot 自動化工具。以下將從安裝、配置、排程續約與安全優化三個階段,以實務範例說明如何在 Ubuntu 24.04 LTS 納入 WordPress 的全自動 HTTPS 機制。
1️⃣ 安裝 Certbot 及其 Apache 插件
Ubuntu 內建 snap 套件管理,採用 snap 可保證 Certbot 為最新版並持續接收安全更新。先確認 snapd 正常運作,然後安裝 Certbot 與 Apache 插件:
# 更新套件索引
sudo apt update
# 安裝 snapd(若已安裝則略過)
sudo apt install snapd
# 使用 snap 安裝 Certbot 與 apache 插件
sudo snap install --classic certbot
# 建立 certbot 簡寫連結
sudo ln -s /snap/bin/certbot /usr/bin/certbot
至此,Certbot 已隱藏於
/snap/bin,接下來可以直接呼叫
certbot 指令。
2️⃣ 先行安裝 Apache 與 WordPress
以下示例假設你已經在 Ubuntu 上完成 LAMP (Linux + Apache + MySQL + PHP) 的部署,且 WordPress 目錄位於
/var/www/html/wordpress。若尚未安裝,可以透過 apt 簡易安裝:
# 安裝 Apache、MySQL、PHP
sudo apt install apache2 mysql-server php php-mysql libapache2-mod-php
# 確認 Apache 正常運作
sudo systemctl status apache2
確保 WordPress 的 virtual host 已正確設定,例如:
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/html/wordpress
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
通過瀏覽器確認 HTTP 連線不受限制後,即可進行憑證簽署。
3️⃣ 申請 Let’s Encrypt 憑證
使用 Certbot 的
certonly 指令,搭配 Apache 插件即可完成自動簽署與 Apache 重新載入證書設定:
# 取得憑證並寫入 Apache settings
sudo certbot --apache -d example.com -d www.example.com
執行時 Certbot 會要求對你的
example.com 域名擁有控制權。它使用 HTTP-01 或 DNS-01 兩種挑戰(Challenge)機制,經由擬定的挑戰檔案驗證網域有效性。若驗證成功,Certbot 會自動把產生的私鑰與證書寫入 Apache 的
sites-available 設定,並重啟 Apache 讓 HTTPS 有效。
4️⃣ 証書自動續約
Let’s Encrypt 的憑證有效期僅 90 天,為避免手動續約,Certbot 內建自動續約腳本。你可在
/etc/cron.daily 中自動執行,或手動建立 cron 例行任務:
# 使用 certbot renew 指令,測試是否可正常續約
sudo certbot renew --dry-run
若上述測試成功,建立每日乾燥執行的 cron job,範例如下:
* * * * * root certbot renew --quiet
這會每分鐘嘗試續約;實際環境中可調為
0 3 * * * 於凌晨 3 點觸發。
5️⃣ 安全最佳實務摘要
- 升級 Apache 幾下限螢幕:使用
apachectl -t -D DUMP_MODULES 檢查是否不需要的模組被載入。
- 啟用 HTTP Strict Transport Security (HSTS):在 Apache 虛擬主機中加入
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"。
- 強化 SSL 參數:使用 Mozilla Hardening Guide 的
ssl.conf 範例,調整 Cipher Suite、加密演算法與 Diffie-Hellman 參數。
- 監控憑證狀態:利用
certbot certificates 查看剩餘天數,合併到監控平台(如 Grafana)呈現。
透過上述流程,WordPress 站台即可在 Apache 上實現無縫 HTTPS,並確保憑證始終保持最新、可信且安全。
參閱文獻
🧠 本文章與所附圖片部分內容為 AI 生成或 AI 輔助產製。文中提及之商標、品牌名稱、產品圖片及相關標識,
其著作權與商標權均屬原權利人所有,本網站僅作為資訊呈現與示意使用