如何在Ubuntu上迁移Nginx SSL
导读:在 Ubuntu 上迁移 Nginx SSL 的完整步骤 一、准备与评估 明确迁移范围:是同一台机器的目录/用户变更,还是跨机器/跨环境迁移。 梳理证书类型与文件: Let’s Encrypt:通常为 /etc/letsencrypt/...
在 Ubuntu 上迁移 Nginx SSL 的完整步骤
一、准备与评估
- 明确迁移范围:是同一台机器的目录/用户变更,还是跨机器/跨环境迁移。
- 梳理证书类型与文件:
- Let’s Encrypt:通常为 /etc/letsencrypt/live/yourdomain.com/ 下的 fullchain.pem 与 privkey.pem(不要把整个 live 目录直接复制,应按文件复制)。
- 其他 CA/自签名:常见为 .crt/.pem 证书与 .key 私钥,建议统一放到 /etc/nginx/ssl/。
- 检查 Nginx 是否支持 SSL:执行 nginx -V,确认编译参数中包含 –with-http_ssl_module;若缺失,需要安装带 SSL 模块的版本或重新编译。
- 规划目标路径与权限:证书与私钥建议放在 /etc/nginx/ssl/,权限设置为仅 root:root 600(私钥必须严格限制)。
二、备份与迁移证书
- 备份源服务器证书与私钥(示例):
- 单域名文件复制:
- sudo cp /etc/letsencrypt/live/yourdomain.com/fullchain.pem /path/to/backup/
- sudo cp /etc/letsencrypt/live/yourdomain.com/privkey.pem /path/to/backup/
- 打包备份:
- sudo tar -czvf nginx_ssl_backup.tar.gz /etc/nginx/ssl/
- 远程同步(跨机迁移推荐):
- rsync -avz -e ssh /etc/letsencrypt/live/yourdomain.com/ user@newhost:/etc/letsencrypt/live/yourdomain.com/
- 单域名文件复制:
- 迁移到新机器后,确保目录与权限正确:
- sudo mkdir -p /etc/letsencrypt/live/yourdomain.com
- sudo chown -R root:root /etc/letsencrypt/live/yourdomain.com
- sudo chmod 600 /etc/letsencrypt/live/yourdomain.com/privkey.pem
- 注意:迁移 Let’s Encrypt 时,证书与私钥可按文件复制;若使用 Certbot 管理的续期,在新机器上建议用 Certbot 重新注册/续期或迁移续期配置,避免续期失败。
三、在新机器部署与更新 Nginx 配置
- 放置证书:将 fullchain.pem/privkey.pem 或 .crt/.key 放到 /etc/nginx/ssl/(或沿用 /etc/letsencrypt/live/ 结构)。
- 更新站点配置(示例):
- 将 HTTP 重定向到 HTTPS:
- server { listen 80; server_name yourdomain.com www.yourdomain.com; return 301 https://$host$request_uri; }
- 配置 HTTPS:
- server {
listen 443 ssl;
server_name yourdomain.com www.yourdomain.com;
- ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem; # 或 /etc/nginx/ssl/yourdomain.crt
- ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem; # 或 /etc/nginx/ssl/yourdomain.key
- ssl_protocols TLSv1.2 TLSv1.3;
- ssl_prefer_server_ciphers on;
- ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384;
- ssl_session_timeout 10m;
- ssl_session_cache shared:SSL:10m;
-
可选:ssl_dhparam /etc/ssl/certs/dhparam.pem; (见下一步)
-
可选安全头
- add_header Strict-Transport-Security “max-age=31536000; includeSubDomains; preload” always;
- root /var/www/yourdomain.com; index index.html;
- location / { try_files $uri $uri/ =404; }
- }
- server {
listen 443 ssl;
server_name yourdomain.com www.yourdomain.com;
- 将 HTTP 重定向到 HTTPS:
- 生成 DH 参数(可选但推荐):sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096
- 检查并重载 Nginx:
- sudo nginx -t
- sudo systemctl reload nginx(或 restart)。
四、验证与切换
- 连通性与证书检查:
- 浏览器访问 https://yourdomain.com 确认证书正确、链完整。
- 使用 SSL Labs 测试评分与配置安全性。
- 防火墙与端口:
- 确保 443 端口开放(UFW:sudo ufw allow ‘Nginx Full’)。
- 灰度切换建议:
- 先保留旧站点的 HTTP→HTTPS 与 证书回退 一段时间,确认新机器稳定后再下线旧证书与旧实例。
- 常见问题排查:
- 配置语法:sudo nginx -t 精确定位错误行。
- 权限问题:私钥 600,证书 644,属主 root:root。
- 续期失败(Let’s Encrypt):检查域名解析、端口可达性、续期日志 /var/log/letsencrypt/letsencrypt.log。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何在Ubuntu上迁移Nginx SSL
本文地址: https://pptw.com/jishu/762180.html
