在網站開發中,數據傳輸的安全性越來越重要。如果你的網站還在使用普通的HTTP協議,用戶的賬號密碼、瀏覽數據等可能會被中間人竊取。HTTPS(HTTP Secure)通過SSL/TLS加密技術,讓數據在傳輸過程中被加密,大大提升了網站的安全性。同時,搜索引擎也更青睞HTTPS網站,現在瀏覽器訪問HTTP網站還會顯示“不安全”提示,影響用戶信任。因此,給網站配置HTTPS是必備技能。

一、獲取SSL證書

要配置HTTPS,首先需要SSL證書。推薦使用Let’s Encrypt免費證書,它由非盈利組織提供,有效期90天,支持自動續期,適合個人和小型網站。獲取證書需藉助Certbot工具,步驟如下:

1. 安裝Certbot

在Ubuntu/Debian系統中,執行以下命令安裝Certbot及Nginx插件:

sudo apt update
sudo apt install certbot python3-certbot-nginx

2. 獲取並安裝證書

運行Certbot命令,指定你的域名(例如example.comwww.example.com):

sudo certbot --nginx -d example.com -d www.example.com
  • --nginx:Certbot會自動修改Nginx配置,無需手動操作。
  • -d:指定需要加密的域名,多個域名用逗號分隔。

執行後,Certbot會自動驗證域名所有權,下載證書,並修改Nginx配置(包括自動配置HTTP到HTTPS的重定向)。

二、驗證證書安裝

安裝完成後,Certbot會輸出成功信息,可通過以下方式驗證:
- 查看證書狀態:運行certbot certificates,可看到證書路徑(如/etc/letsencrypt/live/example.com/)。
- 訪問網站:打開瀏覽器訪問https://example.com,地址欄會出現小鎖圖標,點擊鎖圖標可查看證書詳情,確認頒發者爲Let’s Encrypt。

三、Nginx配置詳解

Certbot已自動修改Nginx配置,但瞭解核心參數有助於排查問題。默認情況下,Nginx配置文件會添加兩個關鍵部分:

1. 監聽443端口並啓用HTTPS

在Nginx的站點配置文件中(通常在/etc/nginx/sites-available/yourdomain.com),會看到類似以下內容:

server {
    listen 443 ssl;  # 監聽HTTPS的443端口
    server_name example.com www.example.com;  # 你的域名

    # SSL證書和私鑰路徑(Certbot自動生成)
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    # 可選:加密協議和套件(Certbot默認已優化,新手可忽略)
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
}

2. HTTP自動重定向到HTTPS

爲了讓用戶訪問http://example.com時自動跳轉到https://example.com,Certbot會在80端口的配置中添加重定向:

server {
    listen 80;  # 監聽HTTP的80端口
    server_name example.com www.example.com;

    # 重定向到HTTPS(301永久重定向)
    return 301 https://$host$request_uri;
}

四、配置驗證與重啓

修改完Nginx配置後,需驗證語法並重啓服務:
1. 檢查配置語法:運行nginx -t,若輸出nginx: configuration file /etc/nginx/nginx.conf test is successful,說明配置無誤。
2. 重啓Nginx:執行sudo systemctl restart nginx(或service nginx restart)。

五、常見問題及解決方法

  1. 證書路徑錯誤:運行certbot certificates檢查證書路徑,確保與Nginx配置中的路徑一致。
  2. 權限不足:Nginx進程(通常是www-data)需讀取證書文件,執行:
   sudo chown -R root:www-data /etc/letsencrypt/live/example.com/
   sudo chmod -R 640 /etc/letsencrypt/live/example.com/
  1. 防火牆未開放443端口:Ubuntu/Debian用戶執行sudo ufw allow 'Nginx Full'開放80和443端口。

六、證書自動續期

Let’s Encrypt證書有效期爲90天,Certbot默認會設置自動續期任務。可通過以下命令測試續期:

sudo certbot renew --dry-run

若輸出Successfully received certificate,說明自動續期正常。

總結

通過Certbot獲取Let’s Encrypt免費證書,並配置Nginx監聽443端口和自動重定向,即可快速實現HTTPS加密訪問。HTTPS不僅提升安全性,還能優化SEO和用戶體驗,是現代網站的必備配置。

小夜