如何在 Debian 12、11 或 10 上使用 Let's Encrypt 保護 Apache

使用 Let's Encrypt 憑證保護您的 Apache Web 伺服器對於保護您的網站和資料至關重要。本指南將引導您在 Debian 12 Bookworm、Debian 11 Bullseye 和 Debian 10 Buster 上完成此過程。這裡的重點是實施強大的安全措施,同時簡化通常與伺服器管理相關的複雜性。

在 Debian 上使用 Let's Encrypt with Apache 的主要優點:

  • 性價比高:Let's Encrypt 提供免費的 SSL 證書,使每個人都能獲得高水準的安全性。
  • 自動續訂:Let's Encrypt 的自動化功能簡化了 SSL 憑證的取得和更新,降低了安全漏洞的風險。
  • 增強安全性:Let's Encrypt 的 SSL 憑證為傳輸中的資料提供強大的加密,增強 Debian 上 Apache 伺服器的整體安全性。
  • 廣泛的兼容性:大多數現代 Web 瀏覽器都能識別 Let's Encrypt 證書,確保流暢的使用者體驗。
  • 主動安全措施:憑藉定期更新和嚴格的策略,Let's Encrypt 是抵禦各種網路威脅的可靠防線。

遵循本指南將教您如何使用 Let's Encrypt 保護 Debian 上的 Apache 伺服器,從而提高 Web 服務的安全性和可靠性。請繼續關注有關實現此基本安全設定的詳細說明。

為 Apache 安裝 Certbot

本節將重點放在基於 Debian 的 Linux 系統上安裝適用於 Apache 的 Certbot。 Certbot 是一款功能強大的工具,可簡化從 Let's Encrypt 取得和設定 SSL 憑證的流程。它與 Apache 攜手合作,使您能夠在伺服器上啟用 HTTPS。

在為 Apache 安裝 Certbot 之前更新 Debian 軟體包儲存庫

在安裝 Certbot 之前,請確保 Debian 系統上的軟體包儲存庫和現有軟體包已更新至關重要。保持系統更新可確保您安裝最新版本的 Certbot 和相依性。執行以下命令來更新套件儲存庫並升級現有套件:

sudo apt update
sudo apt upgrade

安裝 Certbot 和 Apache 插件

現在您的 Debian 系統已是最新的,下一步是安裝 Certbot 及其 Apache 外掛。 Apache 外掛程式至關重要,因為它使 Certbot 能夠與 Apache 互動、自動取得和更新憑證以及設定 Apache 來使用它們。執行以下命令來安裝 Certbot 和 Apache 外掛:

sudo apt install certbot python3-certbot-apache

設定 Apache 和 Let's Encrypt 證書

在本部分中,我們將指導您設定 Apache 並使用 Certbot 為您的網域產生 Let's Encrypt SSL 憑證。我們還將介紹提高伺服器配置安全性的各種選項的使用。

Apache 和 Debian 上的 Certbot 設定和 SSL 憑證生成

安裝 Certbot 及其 Apache 外掛後,下一步是執行 Certbot 為您的網域產生 SSL 憑證。此命令包含多個用於優化安全性的選項。

以下是所使用選項的詳細說明:

  • --apache:指定使用的 Web 伺服器是 Apache。
  • --agree-tos:表示您同意 Let's Encrypt 的服務條款。
  • --redirect:設定從 HTTP 到 HTTPS 的永久 301 重定向,確保所有流量都經過加密。
  • --hsts:新增 Strict-Transport-Security 標頭以強制安全連線。
  • --staple-ocsp:啟用 OCSP Stapling,增強 SSL 協商效能,同時維護使用者隱私。
  • --email:這是您將收到與 SSL 憑證相關的通知的電子郵件地址,例如續訂提醒和安全警報。

代替 you@example.com 與您的實際電子郵件和 yourdomain.com 與您的域名。執行以下命令:

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d yourdomain.com

成功執行後,Certbot 將為您的網域產生 SSL 證書,配置 Apache 以使用它,並套用指定的安全選項。您的伺服器現在將是安全的,並且您的網站將可以透過 HTTPS 存取。

使用 Apache 的替代 Certbot 設定方法

對於那些喜歡更具指導性和互動性的方法的人,Certbot 提供了一種替代方法,提示您提供資訊和配置選擇。以下是如何使用此方法:

運行以下命令:

sudo certbot --apache

Certbot 將啟動互動式會話。以下是您可能遇到的提示的演練:

  • 輸入電子郵件地址(用於緊急續約和安全通知):提供您的電子郵件地址。 Let's Encrypt 將使用它來傳達有關您的證書的訊息。
  • 同意 Let's Encrypt 服務條款:您將被要求同意服務條款。輸入 A 表示同意。
  • 與電子前沿基金會分享您的電子郵件,以獲取他們工作的最新信息:如果您想支援EFF,請輸入Y表示是。否則,輸入 N 作為否。
  • 您希望為哪些名稱啟動 HTTPS:Certbot 將顯示它可以為其頒發證書的網域。輸入與您的網域相對應的數字或將其留空以供所有人使用。
  • 選擇適當的操作:您可以選擇:
    • 1:嘗試重新安裝證書
    • 2:更新和更換證書(每 7 天限制約 5 次)
    • 選擇適合您需求的選項。
  • 選擇是否將 HTTP 流量重新導向到 HTTPS:系統會詢問您是否要將 HTTP 流量重新導向到 HTTPS。對於大多數網站來說這是可取的:
    • 1:無重定向 – 不對網頁伺服器設定進行進一步變更。
    • 2:重定向 – 使所有請求重定向到安全的 HTTPS 存取。
    • 選擇選項 2 以獲得更好的安全性。

一旦您完成所有提示並完成流程,Certbot 將輸出與上述訊息類似的訊息,指示您的憑證檔案的位置和更多資訊。

使用 Cron 自動更新 SSL 憑證

在本節中,我們將使用 Cron(基於 Linux 的系統中的內建作業排程器)為您的 SSL 憑證設定自動續訂過程。 Let's Encrypt SSL 憑證的有效期為 90 天,因此必須在過期之前續訂它們,以避免服務中斷。 Certbot 提供了用於更新憑證的命令,我們可以使用 Cron 自動執行此任務。

證書續訂的試運行

在自動化更新過程之前,確保更新命令按預期工作至關重要。我們可以透過執行試運行來做到這一點,它模擬續訂過程而不更改憑證。執行以下命令來啟動試運行:

sudo certbot renew --dry-run

安排自動證書續約

如果試運行完成且沒有錯誤,我們可以安排自動憑證續約。我們將使用 Cron 在每天的特定時間執行更新命令。

首先,使用以下命令在編輯模式下開啟 crontab 檔案:

sudo crontab -e

在文件末尾添加以下行以安排每日凌晨 2:30 進行續訂檢查:

30 2 * * * /usr/bin/certbot renew --quiet

--quiet 選項可確保續訂過程在背景靜默運行,除非發生錯誤,否則不會產生任何輸出。

新增此行後,儲存並關閉檔案。您現在已經為 SSL 憑證設定了自動續約流程。 Cron 將每天檢查是否有任何證書需要續訂,並根據需要進行續訂。這可確保您的 Apache 伺服器始終使用有效的 SSL 證書,從而維護安全的使用者連線。

增強 Apache SSL 配置

在本節中,我們將透過修改 Apache 伺服器的 SSL 配置來最佳化其效能。這涉及設定 SSL 憑證、啟用 HTTP/2、實作 HTTP 嚴格傳輸安全性 (HSTS) 以及設定 SSL 協定和密碼。此配置需要 Apache 模組 mod_ssl, mod_socache_shmcb, mod_rewrite, 和 mod_headers.

編輯 Apache 設定檔

首先,您需要存取 Apache 中您的網域的設定檔。執行以下命令:

sudo nano /etc/apache2/sites-available/your_domain.conf

這將在名為 Nano 的文字編輯器中開啟您的網域的設定檔。進入後,在 VirtualHost 區塊中進行以下調整。

將 HTTP 重新導向到 HTTPS

首先,我們將設定一條規則將所有 HTTP 流量重新導向到 HTTPS,確保與伺服器的所有連線都是安全的。該規則不包括向 .well-known/acme-challenge/ 目錄,Certbot 在憑證授權過程中使用該目錄進行網域驗證。在裡面新增如下配置 <VirtualHost *:80> 堵塞:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/\.well\-known/acme\-challenge/
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]

啟用 SSL 並指定證書

接下來,在 <VirtualHost *:443> 區塊,我們將啟用 SSL 並指定 SSL 憑證和私鑰的路徑:

SSLEngine on
SSLCertificateFile      /path/to/signed_cert_and_intermediate_certs
SSLCertificateKeyFile   /path/to/private_key

代替 /path/to/signed_cert_and_intermediate_certs 以及 SSL 憑證檔案的路徑,以及 /path/to/private_key 以及您的私鑰檔案的路徑。

啟用 HTTP/2

為了提高效能,我們將啟用 HTTP/2(如果可用):

Protocols h2 http/1.1

實施HSTS

我們還將添加一個 Strict-Transport-Security 標頭來強制安全連線:

Header always set Strict-Transport-Security "max-age=63072000"

設定 SSL 協定和密碼

接下來,我們將指定應使用哪些 SSL 協定和密碼來確保高安全性和相容性:

SSLProtocol                        all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite                  ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305
SSLHonorCipherOrder    off
SSLSessionTickets            off

啟用 OCSP 裝訂

最後,我們將啟用 OCSP 裝訂,該功能可提高 SSL 協商的效能,同時維護訪客的隱私:

SSLUseStapling On
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"

驗證並應用更改

完成後,儲存並退出文件。驗證 Apache 配置以確保沒有語法錯誤至關重要。執行此命令來檢查:

sudo apachectl configtest

如果沒有問題,請透過重新載入 Apache 來套用變更:

sudo systemctl restart apache2

結論

在本文中,我們深入研究了在 Debian 10、11 和 12 上使用 Let's Encrypt SSL 憑證來保護 Apache。從安裝 Certbot 開始,我們探討如何從 Let's Encrypt 取得免費的 SSL 憑證。我們還討論了設定 Apache 以利用 SSL 憑證、透過 cron 作業自動化更新流程以及透過 Apache 設定增強安全性。

最後的建議是,定期監控日誌並保持系統最新狀態至關重要。這些做法將確保您了解潛在問題,並確保您的伺服器針對最新的安全漏洞進行了防禦。

Joshua James
跟我來
Joshua James 的最新帖子 (看全部)

發佈留言