用户首先获取SSL证书文件,上传到服务器,配置Nginx的SSL相关参数,设置HTTP重定向到HTTPS,测试并重新加载配置,最后验证安装是否正确。如果是用Certbot的话,这些步骤大部分可以自动化完成,更省事。下面我写一下在Nginx服务器上安装SSL证书的完整步骤:
一、准备工作
1. 获取SSL证书文件
从证书颁发机构(CA)获取以下文件(如购买或使用Let's Encrypt):
域名证书(如 example.com.crt)
私钥文件(如 example.com.key)
中间证书链(CA提供的 .crt 文件,可能需要合并到证书文件中)。
2. 上传文件到服务器
将证书文件通过SFTP/SCP上传到服务器(推荐路径:/etc/nginx/ssl/)。
3. 创建SSL目录并设置权限
bash
复制
下载
sudo mkdir -p
/etc/nginx/ssl
sudo chmod 700 /etc/nginx/ssl
二、配置Nginx支持SSL
1. 编辑Nginx配置文件
打开域名对应的配置文件(如 /etc/nginx/sites-available/example.com):
bash
复制
下载
sudo nano /etc/nginx/sites-available/example.com
2. 配置SSL监听443端口
在 server 块中添加以下内容:
nginx
复制
下载
server {
listen 443 ssl;
server_name example.com www.example.com;
SSL证书路径
ssl_certificate /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
优化SSL配置(推荐)
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
其他配置(如root目录、index等)
root /var/www/example.com;
index index.html;
}
3. 强制HTTP跳转到HTTPS(可选)
添加一个新的 server 块监听80端口并重定向:
nginx
复制
下载
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
三、使用Certbot自动安装(Let's Encrypt推荐)
1. 安装Certbot工具
bash
复制
下载
sudo apt
update
sudo apt install certbot python3-certbot-nginx
2. 自动获取并安装证书
bash
复制
下载
sudo certbot --nginx -d example.com -d www.example.com
Certbot会自动修改Nginx配置并处理证书续期。
四、检查配置并重启Nginx
1. 测试配置语法
bash
复制
下载
sudo nginx -t
2. 重启Nginx生效
bash
复制
下载
sudo systemctl reload nginx # 或 sudo service nginx reload
五、验证SSL证书
1. 浏览器访问
打开 https://example.com,确认地址栏显示安全锁标志。
2. 使用在线工具检测
通过 SSL Labs SSL Test 检查配置安全性。
常见问题排查
权限问题:确保私钥文件权限为 600(sudo chmod 600 /etc/nginx/ssl/*.key)。
证书路径错误:检查Nginx配置中的 ssl_certificate 和 ssl_certificate_key 路径。
防火墙设置:确保防火墙开放443端口(如 sudo ufw allow 443/tcp)。
用户通过以上五大步骤,就能把SSL证书成功安装到Nginx服务器,实现HTTPS加密访问。