Nginx的SSL证书(.crt
)和私钥(.key
)通常存储在以下目录:
/etc/ssl/certs/your_domain_name.crt
(或自定义路径,需通过配置文件确认)/etc/ssl/private/your_domain_name.key
(或自定义路径,需通过配置文件确认)确认路径的方法:
用文本编辑器打开Nginx站点配置文件(如/etc/nginx/sites-available/default
或/etc/nginx/conf.d/your_site.conf
),找到ssl_certificate
和ssl_certificate_key
指令,其后的路径即为证书和私钥的实际位置。
使用cp
命令将证书和私钥文件复制到安全目录(如/backup/nginx_ssl
):
sudo mkdir -p /backup/nginx_ssl # 创建备份目录(可选)
sudo cp /etc/ssl/certs/your_domain_name.crt /backup/nginx_ssl/
sudo cp /etc/ssl/private/your_domain_name.key /backup/nginx_ssl/
注意:私钥文件(.key
)包含敏感信息,需确保备份目录权限严格(如chmod 700 /backup/nginx_ssl
)。
使用tar
命令将证书和私钥打包成压缩文件,便于统一管理:
sudo tar -czvf nginx_ssl_backup.tar.gz \
/etc/ssl/certs/your_domain_name.crt \
/etc/ssl/private/your_domain_name.key
说明:
-c
:创建归档文件;-z
:用gzip压缩;-v
:显示详细过程;-f
:指定归档文件名。通过cron
任务实现每日自动备份,避免遗漏:
sudo crontab -e # 编辑当前用户的crontab
添加以下内容(每日凌晨2点执行备份,文件名包含日期):
0 2 * * * /bin/bash -c 'tar -czvf /backup/nginx_ssl_$(date +\%Y\%m\%d).tar.gz /etc/ssl/certs/your_domain_name.crt /etc/ssl/private/your_domain_name.key'
保存后,cron
会自动执行备份任务。
确保你有以下信息:
.crt
)和私钥(.key
)文件;ssl_certificate
和ssl_certificate_key
的路径(用于确认恢复位置)。若之前备份的是单个文件,直接复制到原路径:
sudo cp /backup/nginx_ssl/your_domain_name.crt /etc/ssl/certs/
sudo cp /backup/nginx_ssl/your_domain_name.key /etc/ssl/private/
若之前打包了归档文件,解压到对应目录:
sudo tar -xzvf nginx_ssl_backup.tar.gz -C / # 解压到根目录,覆盖原路径文件
注意:解压前建议关闭Nginx服务(sudo systemctl stop nginx
),避免文件占用冲突。
私钥文件必须仅能被Nginx进程(通常为www-data
用户)读取,否则会导致SSL启动失败:
sudo chown www-data:www-data /etc/ssl/private/your_domain_name.key # 修改所有者
sudo chmod 600 /etc/ssl/private/your_domain_name.key # 设置权限(仅所有者可读写)
运行以下命令,确保Nginx配置文件无语法错误:
sudo nginx -t
若输出syntax is ok
和test is successful
,说明配置正确。
若语法检查通过,重新加载Nginx以应用证书:
sudo systemctl reload nginx
通过浏览器或命令行工具确认SSL证书已生效:
打开浏览器,访问https://your_domain.com
,点击地址栏左侧的锁图标,查看证书信息(有效期、颁发机构等)。
使用curl
命令查看SSL握手信息:
curl -v https://your_domain.com
输出中应包含SSL certificate verify ok
,表示证书有效。