確保服務器已安裝Nginx且正常運行,域名已解析到服務器IP地址。
sudo systemctl status nginx
(若未安裝,運行sudo apt update && sudo apt install nginx
安裝)。Certbot是Let’s Encrypt的官方客戶端,可自動獲取和配置SSL證書。
運行以下命令安裝Certbot及Nginx插件:
sudo apt update && sudo apt install certbot python3-certbot-nginx
使用Certbot為域名生成免費證書,命令會自動處理證書申請、驗證及Nginx配置更新。
sudo certbot --nginx -d your_domain.com -d www.your_domain.com
-d
參數指定域名(可同時添加主域名和子域名,如www
)。Certbot會自動修改Nginx配置文件(通常位于/etc/nginx/sites-available/
或/etc/nginx/conf.d/
),添加HTTPS監聽端口(443)及證書路徑。
sudo nginx -t
(若輸出“syntax is ok”,說明配置正確)。sudo systemctl reload nginx
(使配置生效)。在瀏覽器中訪問https://your_domain.com
,若地址欄顯示鎖圖標,則表示SSL證書配置成功。
Let’s Encrypt證書有效期為90天,Certbot默認會添加定時任務(每天檢查),但需手動測試續期功能。
運行以下命令模擬續期:sudo certbot renew --dry-run
(若無報錯,說明續期功能正常)。
若已通過其他途徑(如購買商業證書)獲得證書文件,可按以下步驟手動配置:
.crt
)、私鑰(.key
)及中間證書(若有,.ca-bundle
)上傳至服務器,建議存放在/etc/nginx/ssl/
目錄(需手動創建)。sudo mkdir -p /etc/nginx/ssl/
sudo cp your_domain.crt /etc/nginx/ssl/
sudo cp your_domain.key /etc/nginx/ssl/
sudo cp your_domain.ca-bundle /etc/nginx/ssl/ # 可選,中間證書
server
塊及強制HTTP跳轉規則:# 強制HTTP跳轉到HTTPS
server {
listen 80;
server_name your_domain.com www.your_domain.com;
return 301 https://$host$request_uri;
}
# HTTPS配置
server {
listen 443 ssl;
server_name your_domain.com www.your_domain.com;
# 證書路徑
ssl_certificate /etc/nginx/ssl/your_domain.crt;
ssl_certificate_key /etc/nginx/ssl/your_domain.key;
ssl_trusted_certificate /etc/nginx/ssl/your_domain.ca-bundle; # 可選
# SSL安全配置(推薦)
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# 網站根目錄
root /var/www/your_domain;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
sudo nginx -t && sudo systemctl reload nginx
通過以上步驟,即可在Ubuntu服務器上為Nginx配置SSL證書,實現網站HTTPS加密訪問。