用户首先获取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加密访问。