在網站開發中,數據傳輸的安全性越來越重要。如果你的網站還在使用普通的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.com和www.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)。
五、常見問題及解決方法¶
- 證書路徑錯誤:運行
certbot certificates檢查證書路徑,確保與Nginx配置中的路徑一致。 - 權限不足:Nginx進程(通常是
www-data)需讀取證書文件,執行:
sudo chown -R root:www-data /etc/letsencrypt/live/example.com/
sudo chmod -R 640 /etc/letsencrypt/live/example.com/
- 防火牆未開放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和用戶體驗,是現代網站的必備配置。