CodeGym /Adesua ahorow /Docker SELF /使用Let's Encrypt設定HTTPS(SSL/TLS)

使用Let's Encrypt設定HTTPS(SSL/TLS)

Docker SELF
等級 7 , 課堂 3
開放

使用Let's Encrypt設定HTTPS(SSL/TLS)

1. 這堂課是關於什麼的,為什麼這麼重要

在現代世界,HTTPS 已經成為所有網站的標準。如果你希望用戶感覺安全,且避免 Google 在搜索排名中降低你網站的位置(沒錯,HTTPS 會影響 SEO),那麼你絕對需要設置 SSL/TLS。HTTPS 協議透過加密保護用戶與伺服器之間傳輸的數據,這樣可以防止惡意入侵者攔截數據。

在這堂課中,我們會一步步教你如何免費使用 Let's Encrypt 來為你的 Web 伺服器啟用 HTTPS。Let's Encrypt 是一家權威的證書機構(CA),提供免費的證書和安裝工具。我們還會學到如何自動續期證書,以避免證書過期帶來的麻煩。

HTTP vs HTTPS

HTTP (Hypertext Transfer Protocol) 是一種數據傳輸協議。它很適合用來刷貓咪 meme,但!如果有人接入你的 Wi-Fi 網絡(比如咖啡館裡),他們可以攔截你發送到伺服器的數據(很糟糕,你的密碼會變成“他們的密碼”)。

HTTPS (Hypertext Transfer Protocol Secure) 是 HTTP 加上加密的版本。通過 SSL/TLS (Secure Sockets Layer / Transport Layer Security),在用戶和伺服器之間傳輸的數據會得到保護。即使有人攔截到了數據“包”,他也無法看到裡面的內容。


2. 安裝Let's Encrypt以及Certbot

Certbot是一款由Let's Encrypt開發者提供的工具,幫助我們輕鬆獲取並設定SSL憑證給你的網路伺服器。它夠聰明,可以與Nginx或者Apache自動協作,幫我們處理所有繁瑣的事物。我們從安裝開始吧。

安裝Certbot

確保你的伺服器已更新:

sudo apt-get update
sudo apt-get upgrade

現在我們來安裝Certbot及其插件:

  • 對於Nginx:

    sudo apt-get install certbot python3-certbot-nginx
    
  • 對於Apache:

    sudo apt-get install certbot python3-certbot-apache
    
有趣的小知識:

Certbot本身只是簡單的Python程式碼,由社群積極維護。它可以輕鬆整合到大多數伺服器中。


3. 使用 Certbot 獲取 SSL 證書

對於 Nginx

如果你使用 Nginx,Certbot 可以自動為你的網站設定 HTTPS。輸入以下指令:

sudo certbot --nginx

Certbot 會掃描你目前的虛擬主機 (server 區塊的設定)。它會問你要為哪個域名設定 HTTPS。確認你的域名透過 DNS 指向你的伺服器(例如,使用 A 記錄)。

範例輸出:

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: example.com
2: www.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

選擇你的域名 (例如, 1)。

Certbot 會自動設定 Nginx 的設定檔並進行檢查。完成後,你會看到類似以下的訊息:

Congratulations! Your certificate and chain have been saved ...

現在你的網站可以透過 HTTPS 訪問了。你可以打開 https://example.com 在瀏覽器中檢查。


對於 Apache

如果你使用 Apache,指令會稍微不同:

sudo certbot --apache

Certbot 也會掃描你的虛擬主機 (<VirtualHost> 區塊) 並提議為選定的域名設定 HTTPS。選擇你需要的域名,之後 Certbot 會為你完成所有設定。

完成後,你同樣會看到一個祝賀訊息,並可以透過 HTTPS 檢查你網站的可用性。


4. 自動更新證書

Let's Encrypt 的證書只有效 90 天,所以我們需要定期更新它們。Certbot 可以自動完成這個操作,但我們需要確認一切已正確配置。

檢查證書的有效期限

你可以檢查你的證書何時到期:

sudo certbot certificates

輸出會顯示你的域名以及它們的證書到期日期。

配置自動更新

在安裝時,Certbot 會自動新增 Cron 或 Systemd Timer 任務來檢查更新。如果你想確保所有內容正常運作,可以在 Cron 中新增測試任務:

sudo crontab -e

新增以下行:

0 0 * * * certbot renew --quiet

這條命令會在每天午夜檢查並更新證書。--quiet 參數會禁用無用的輸出信息。

手動更新

如果你想手動更新證書(舉例來說,為測試目的),請使用:

sudo certbot renew

5. 啟用自動 HTTP → HTTPS 重導

你的网站还是可能通过 HTTP 被访问,但这是不安全的。咱們來設置把所有請求重導至 HTTPS。

對於 Nginx

Certbot 可以在頒發證書時自動配置重導。如果你之前沒有啟用這個功能,可以手動在你的虛擬主機配置文件中添加重導:

server {
    listen 80;
    server_name example.com www.example.com;

    return 301 https://$host$request_uri;
}

重新加載 Nginx 來應用更改:

sudo systemctl restart nginx

對於 Apache

Certbot 也支持自動啟用重導。如果你跳過了這一步,則可以在你的虛擬主機文件中添加:

<VirtualHost *:80>
    ServerName example.com
    Redirect permanent / https://example.com/
</VirtualHost>

重新啟動 Apache:

sudo systemctl restart apache2

6. 錯誤調試

如果出現問題,先查看日誌:

對於 Nginx

sudo tail -f /var/log/nginx/error.log

對於 Apache

sudo tail -f /var/log/apache2/error.log

配置測試

同時檢查 web 伺服器的配置:

  • 對於 Nginx:

    sudo nginx -t
    
  • 對於 Apache:

    sudo apachectl configtest
    

檢查 HTTPS

確保你的網站可以通過 HTTPS 訪問:

curl -I https://example.com

你應該看到狀態 200 OKStrict-Transport-Security,這表示 HTTPS 正常運行。

現在,你準備好建立安全的 HTTPS 網站了。你的用戶會開心,Google 也會開心,而你可以安心入睡,因為你的數據已經被保護免受網絡壞蛋的攻擊。

留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION