用户首先获取SSL证书, 上传证书到服务器,配置Nginx的server块,添加SSL相关参数,设置HTTP重定向到HTTPS,检查配置并重启Nginx,最后验证。下面是用户在Nginx服务器上安装SSL证书的具体步骤,分为手动安装和自动安装(如使用Certbot)两种方式:

一、手动安装SSL证书

1. 准备SSL证书文件

从证书颁发机构(CA)获取以下文件(通常为压缩包):

域名证书文件(如 your_domain.crt)

私钥文件(如 your_domain.key)

中间证书文件(如 CA.crt,可选但推荐合并)

将文件上传到服务器(建议存放在 /etc/nginx/ssl/):

bash

sudo mkdir -p /etc/nginx/ssl/

sudo cp your_domain.crt your_domain.key /etc/nginx/ssl/

2. 合并中间证书(可选)

合并证书文件和中间证书,确保完整信任链:

bash

sudo cat your_domain.crt CA.crt >> /etc/nginx/ssl/your_domain_chain.crt

3. 配置Nginx

编辑Nginx的服务器块配置文件(通常位于 /etc/nginx/sites-available/):

nginx

server {

listen 443 ssl;

server_name your_domain.com www.your_domain.com;

SSL证书路径

ssl_certificate     /etc/nginx/ssl/your_domain_chain.crt;  # 合并后的证书

ssl_certificate_key /etc/nginx/ssl/your_domain.key;

安全配置

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 /var/www/html;

index index.html;

}

HTTP重定向到HTTPS

server {

listen 80;

server_name your_domain.com www.your_domain.com;

return 301 https://$host$request_uri;

}

4. 检查配置并重启Nginx

测试配置语法:

bash

sudo nginx -t

重启Nginx生效:

bash

sudo systemctl reload nginx  # 或 sudo service nginx reload

5. 验证安装

访问 https://your_domain.com,确认浏览器显示安全锁图标。

使用在线工具检测(如 SSL Labs SSL Test)。

二、自动安装(使用Certbot)

适用于Let's Encrypt免费证书的自动化部署:

1. 安装Certbot

bash

sudo apt update

sudo apt install certbot python3-certbot-nginx

2. 获取并安装证书

bash

sudo certbot --nginx -d your_domain.com -d www.your_domain.com

Certbot会自动修改Nginx配置并重启服务。

3. 设置自动续期

Let's Encrypt证书有效期为90天,Certbot默认配置定时任务:

bash

sudo certbot renew --dry-run  # 测试续期

三、防火墙设置

确保防火墙允许HTTPS流量(端口443):

bash

sudo ufw allow 'Nginx Full'  # 允许HTTP(80)和HTTPS(443)

sudo ufw reload

常见问题排查

证书路径错误

检查Nginx配置中的 ssl_certificate 和 ssl_certificate_key 路径是否正确。

权限问题

私钥文件权限应为600:

bash

sudo chmod 600 /etc/nginx/ssl/your_domain.key

配置未生效

确认重启Nginx服务,并检查错误日志:

bash

sudo tail -f /var/log/nginx/error.log

混合内容警告

确保网站内所有资源(图片、CSS等)均通过HTTPS加载。

用户通过以上几个步骤,就可以在Nginx上成功部署SSL证书,实现HTTPS加密访问。