在Nginx服务器上安装SSL证书,首先获取SSL证书:可以通过Certbot自动生成,或者手动上传已有证书获取SSL证书:可以通过Certbot自动生成,或者手动上传已有证书,配置Nginx,修改server块,添加ssl相关指令,监听443端口,配置HTTP重定向到HTTPS,检查配置并重启Nginx,验证安装是否成功,测试HTTPS访问,检查证书有效性,其具体步骤如下,分为自动获取证书(推荐使用Let's Encrypt)和手动安装已有证书两种方式:

一、使用Certbot自动获取并安装SSL证书(Let's Encrypt)

1. 安装Certbot及Nginx插件

bash

复制

Ubuntu/Debian

sudo apt

update

sudo apt install

certbot python3-certbot-nginx


CentOS/RHEL

sudo yum install

epel-release

sudo yum install certbot python3-certbot-nginx

2. 获取并自动配置SSL证书

bash

复制

sudo certbot --nginx

按提示输入邮箱、同意服务条款,并选择需要配置SSL证书的域名。

Certbot会自动完成证书申请、验证,并修改Nginx配置文件启用HTTPS。

3. 验证自动续期

Let's Encrypt证书有效期为90天,Certbot默认配置了自动续期任务,可手动测试:

bash

复制

sudo certbot renew --dry-run

二、手动安装已有SSL证书

1. 准备证书文件

将证书文件(如 domain.crt)和私钥(如 domain.key)上传到服务器,建议存放路径:

bash

复制

sudo mkdir -p

 /etc/nginx/ssl

sudo cp

domain.crt /etc/nginx/ssl/

sudo cp domain.key /etc/nginx/ssl/

设置文件权限(确保私钥安全):

bash

复制

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

2. 配置Nginx

编辑Nginx配置文件(通常在 /etc/nginx/sites-available/ 或 /etc/nginx/conf.d/):

nginx

复制

server {

listen 443 ssl;

server_name example.com www.example.com;

SSL证书路径

ssl_certificate /etc/nginx/ssl/domain.crt;

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

优化SSL配置

ssl_protocols TLSv1.2 TLSv1.3;

ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;

ssl_prefer_server_ciphers off;

ssl_session_cache shared:SSL:10m;

ssl_session_timeout 10m;

keepalive_timeout 70;

其他配置(如root、index等)

root /var/www/html;

index index.html;

}

HTTP重定向到HTTPS

server {

listen 80;

server_name example.com www.example.com;

return 301 https://$host$request_uri;

}

3. 检查配置并重启Nginx

bash

复制

sudo nginx -t  # 测试配置文件语法

sudo systemctl restart nginx  # 重启Nginx

三、验证SSL安装

1. 访问网站:通过浏览器访问 https://example.com,确认锁图标正常。

2. 在线工具检测:使用 SSL Labs测试 检查配置安全性。

3. 命令行验证

bash

复制

curl -I

https://example.com

openssl s_client 

connect example.com:443

常见问题处理

证书链不完整:将中间证书合并到域名证书文件中:

bash

复制

cat domain.crt intermediate.crt >> /etc/nginx/ssl/domain.crt

防火墙未放行443端口:

bash

复制

sudo ufw allow 443/tcp  # 使用UFW

配置错误:通过 nginx -t 检查语法,确保所有路径和域名正确。

通过以上三大步骤,就可以为Nginx服务器成功安装SSL证书,确保网站通过HTTPS安全访问。