Ubuntu 上 Nginx 配置 SSL 证书步骤
一 准备与前置检查
sudo apt update && sudo apt install nginx。sudo ufw allow 'Nginx Full'(同时放行 80/443)。二 方式一 使用 Certbot 自动获取并部署 Let’s Encrypt 证书(推荐)
sudo apt install certbot python3-certbot-nginx。sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com,按提示选择是否重定向 HTTP→HTTPS。sudo systemctl enable --now certbot.timer,可测试续期 sudo certbot renew --dry-run。openssl s_client -connect yourdomain.com:443 -servername yourdomain.com。三 方式二 手动配置已有证书
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name yourdomain.com www.yourdomain.com;
ssl_certificate /etc/nginx/ssl/your_certificate.crt;
ssl_certificate_key /etc/nginx/ssl/your_private.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:
ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:
DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers on;
root /var/www/yourdomain.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/sudo nginx -tsudo systemctl reload nginx(或 restart)openssl s_client -connect yourdomain.com:443 -servername yourdomain.com。四 常见问题与进阶
options-ssl-nginx.conf 与 dhparam:ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crtssl_certificate 与 ssl_certificate_key 指向上述文件,浏览器会提示不受信任(仅用于测试)。