在測試前需準備好SSL證書,可選擇自簽名證書(僅用于開發/內網)或Let’s Encrypt免費證書(推薦生產環境)。
nginx-selfsigned.key)和自簽名證書(nginx-selfsigned.crt):sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/nginx-selfsigned.key \
-out /etc/ssl/certs/nginx-selfsigned.crt
命令會提示輸入國家、組織等信息,均可隨意填寫。sudo apt update && sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
Certbot會自動配置Nginx并設置證書自動續期。編輯Nginx配置文件(通常位于/etc/nginx/sites-available/default或/etc/nginx/sites-available/yourdomain.conf),添加以下內容:
# HTTP重定向到HTTPS
server {
listen 80;
server_name yourdomain.com www.yourdomain.com; # 替換為你的域名或IP
return 301 https://$host$request_uri;
}
# HTTPS配置
server {
listen 443 ssl;
server_name yourdomain.com www.yourdomain.com;
# 證書路徑(自簽名證書替換為上述生成的路徑)
ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;
# 強化SSL配置(可選但推薦)
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# 網站根目錄(根據實際情況調整)
location / {
root /var/www/html;
index index.html index.htm;
}
}
保存配置文件。
在重新加載Nginx前,必須驗證配置文件語法是否正確,避免因配置錯誤導致服務中斷:
sudo nginx -t
若輸出nginx: configuration file /etc/nginx/nginx.conf test is successful,則表示配置正確。
配置語法正確后,重新加載Nginx以應用更改:
sudo systemctl reload nginx
若需重啟Nginx(如修改了配置但未生效),可使用:
sudo systemctl restart nginx
https://yourdomain.com(或服務器IP),若配置正確,會看到瀏覽器地址欄顯示安全鎖圖標(自簽名證書會提示“不安全”,但可忽略繼續訪問)。curl查看SSL握手詳情:curl -v https://yourdomain.com
輸出中會顯示SSL connection using TLSv1.3(表示TLS協議生效)及證書信息。使用SSL Labs在線工具(https://www.ssllabs.com/ssltest/)輸入你的域名,可全面檢測SSL配置的安全性,包括:
.crt)與私鑰(.key)路徑正確且為配對文件,可使用openssl x509 -in cert.crt -text -noout和openssl rsa -in key.key -check驗證文件完整性;sudo ufw allow 443/tcp);nginx -t報錯,根據提示定位配置文件中的錯誤行(如路徑拼寫錯誤、缺少分號等)。