以下是在Ubuntu上為Nginx安裝SSL證書的步驟,分為手動安裝和Let’s Encrypt自動安裝兩種方式:
安裝Nginx和OpenSSL
sudo apt update
sudo apt install nginx openssl
獲取證書文件
certificate.crt
(證書)和private.key
(私鑰)。sudo mkdir -p /etc/nginx/ssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/nginx/ssl/selfsigned.key \
-out /etc/nginx/ssl/selfsigned.crt
配置Nginx
編輯站點配置文件(如/etc/nginx/sites-available/example.com
):
server {
listen 443 ssl;
server_name example.com www.example.com;
ssl_certificate /etc/nginx/ssl/certificate.crt;
ssl_certificate_key /etc/nginx/ssl/private.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
root /var/www/html;
index index.html;
}
}
# 強制HTTP跳轉HTTPS(可選)
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
測試并重啟Nginx
sudo nginx -t # 測試配置語法
sudo systemctl reload nginx # 重啟服務
驗證SSL
瀏覽器訪問https://example.com
,檢查是否顯示安全鎖標志。
安裝Certbot
sudo apt update
sudo apt install certbot python3-certbot-nginx
獲取并配置證書
sudo certbot --nginx -d example.com -d www.example.com
按提示選擇域名,Certbot會自動修改Nginx配置并啟用HTTPS。
設置自動續訂
Certbot默認添加定時任務,可手動測試續訂:
sudo certbot renew --dry-run
/etc/nginx/ssl/
目錄(可自定義),Let’s Encrypt證書路徑為/etc/letsencrypt/live/域名/
。TLSv1.2 TLSv1.3
,禁用不安全的SSLv3
等舊協議。sudo ufw allow 'Nginx Full'
參考來源: