centos

nginx在centos上ssl设置步骤

小樊
45
2025-10-07 00:48:43
栏目: 云计算

Nginx在CentOS上配置SSL的完整步骤

1. 前置准备

2. 获取SSL证书

SSL证书是HTTPS的核心,可选择自签名证书(测试用)或正式证书(生产用)。

2.1 自签名证书(仅测试)

自签名证书由本地生成,浏览器会提示“不安全”,但可用于本地开发环境。

sudo mkdir -p /etc/nginx/ssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
    -keyout /etc/nginx/ssl/selfsigned.key \
    -out /etc/nginx/ssl/selfsigned.crt \
    -subj "/CN=yourdomain.com"  # 替换为你的域名或服务器IP

说明

2.2 正式证书(推荐生产环境)

使用Let’s Encrypt免费获取正式证书(支持自动续期),需通过certbot工具实现。

sudo yum install -y certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com  # 替换为你的域名

说明

3. 配置Nginx启用SSL

编辑Nginx配置文件(推荐使用/etc/nginx/conf.d/ssl.conf,避免修改主配置文件),添加以下内容:

3.1 HTTP重定向到HTTPS(强制加密)
sudo vim /etc/nginx/conf.d/redirect.conf

内容:

server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;  # 替换为你的域名
    return 301 https://$host$request_uri;  # 将所有HTTP请求重定向到HTTPS
}
3.2 HTTPS主站配置
sudo vim /etc/nginx/conf.d/ssl.conf

内容(自签名证书示例):

server {
    listen 443 ssl http2;  # 启用HTTPS和HTTP/2(提升性能)
    server_name yourdomain.com www.yourdomain.com;

    # SSL证书路径(根据证书类型调整)
    ssl_certificate /etc/nginx/ssl/selfsigned.crt;  # 自签名证书路径
    ssl_certificate_key /etc/nginx/ssl/selfsigned.key;  # 私钥路径

    # 推荐的安全配置(强化SSL加密)
    ssl_protocols TLSv1.2 TLSv1.3;  # 仅使用TLS 1.2及以上版本(禁用SSLv3、TLS 1.0/1.1)
    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 /usr/share/nginx/html;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;  # 处理静态文件请求
    }
}

说明

4. 测试与重载Nginx

5. 验证HTTPS访问

6. 可选:防火墙与SELinux配置

7. 证书续期(仅正式证书)

若使用Let’s Encrypt证书,certbot会自动添加续期任务(每天检查),但需手动触发重载Nginx。

sudo certbot renew --dry-run  # 测试续期(模拟操作)
sudo systemctl reload nginx  # 续期后重载Nginx

通过以上步骤,即可在CentOS上为Nginx配置SSL加密,实现HTTPS安全访问。生产环境建议使用Let’s Encrypt等免费正式证书,提升用户信任度。

0
看了该问题的人还看了