首页主机资讯nginx ssl在centos上的最佳实践是什么

nginx ssl在centos上的最佳实践是什么

时间2025-12-12 00:56:04发布访客分类主机资讯浏览763
导读:Nginx SSL 在 CentOS 的最佳实践 一 环境准备与证书获取 系统与安全组 更新系统并安装工具:sudo yum update -y && sudo yum install -y curl wget vim...

Nginx SSL 在 CentOS 的最佳实践

一 环境准备与证书获取

  • 系统与安全组
    • 更新系统并安装工具:sudo yum update -y & & sudo yum install -y curl wget vim
    • 放行防火墙端口:sudo firewall-cmd --zone=public --add-port=443/tcp --permanent & & sudo firewall-cmd --reload
  • 安装 Nginx
    • 启用 EPEL:sudo yum install -y epel-release
    • 安装与启动:sudo yum install -y nginx & & sudo systemctl start nginx & & sudo systemctl enable nginx
  • 证书获取
    • Let’s Encrypt 自动:sudo yum install -y certbot python3-certbot-nginx,然后 sudo certbot --nginx -d example.com -d www.example.com
    • 手动 CSR(商业证书):openssl req -new -newkey rsa:2048 -nodes -keyout /etc/ssl/private/example.com.key -out /etc/ssl/certs/example.com.csr
  • 续期与测试
    • 测试续期:sudo certbot renew --dry-run
    • 定时续期(每月):0 3 * * * /usr/bin/certbot renew --quiet
    • 证书有效期检查:openssl x509 -in /etc/ssl/certs/example.com.crt -noout -dates

二 推荐的 Nginx SSL 配置

  • 建议将安全与性能参数集中到 http 块,server 块按需引用,便于多站点复用。
  • 示例要点
    • 仅启用TLSv1.2/TLSv1.3,优先服务器套件,启用HTTP/2
    • 启用OCSP Stapling与会话恢复(会话票据/缓存)
    • 配置HSTS与常用安全头
    • HTTP 全站 301 跳转 HTTPS
http {
    
    # 会话与恢复
    ssl_session_cache shared:SSL:10m;
    
    ssl_session_timeout 1d;
    
    ssl_session_tickets on;
    
    # 可选:生成密钥文件并设定权限(/etc/nginx/ssl/ticket.key,600)
    # ssl_session_ticket_key /etc/nginx/ssl/ticket.key;
    

    # 现代协议与性能
    ssl_protocols TLSv1.2 TLSv1.3;
    
    ssl_prefer_server_ciphers on;
    
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:
                ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:
                DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    
    ssl_ecdh_curve secp384r1;
    
    ssl_buffer_size 1400;
    

    # OCSP Stapling
    ssl_stapling on;
    
    ssl_stapling_verify on;
    
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    
    resolver 8.8.8.8 8.8.4.4 valid=300s;
    
    resolver_timeout 5s;
    

    # 可选:TLS 1.3 0-RTT(有重放风险,按业务谨慎开启)
    # ssl_early_data on;


    server {
    
        listen 443 ssl http2;
    
        server_name example.com www.example.com;
    

        ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
    
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    

        # 安全头
        add_header Strict-Transport-Security "max-age=63072000;
     includeSubDomains;
     preload" always;
    
        add_header X-Frame-Options DENY;
    
        add_header X-Content-Type-Options nosniff;
    

        # 站点根目录(示例)
        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;

    }

}
    
  • 证书路径说明
    • Let’s Encrypt 常用路径:/etc/letsencrypt/live/example.com/fullchain.pemprivkey.pem
    • 商业证书常见为:域名证书 .crt、中间证书 .ca-bundle;合并为 fullchain.pem 更便于配置:cat domain.crt chain.crt > fullchain.pem

三 部署与运维要点

  • 配置语法与热重载
    • 检查:sudo nginx -t
    • 生效:sudo systemctl reload nginx(或 restart
  • 权限与路径
    • 证书与密钥建议权限:chown root:nginx /path/to/*.pem; chmod 640 /path/to/*.pem
    • 常见错误为证书路径错误或权限不足,Nginx 启动失败或握手异常
  • 日志排查
    • 错误日志:/var/log/nginx/error.log
    • 握手与证书链问题可用:openssl s_client -connect example.com:443 -servername example.com
  • 在线评测
    • Qualys SSL Labs:https://www.ssllabs.com/ssltest/analyze.html?d=example.com(目标评分 A+)

四 场景化配置与注意事项

  • WebSocket 安全代理(WSS)
    • 关键要点:HTTP/1.1、Upgrade/Connection 头、长连接超时
    • 示例:
      location /wss/ {
          
          proxy_pass http://127.0.0.1:8080;
          
          proxy_http_version 1.1;
          
          proxy_set_header Upgrade $http_upgrade;
          
          proxy_set_header Connection "Upgrade";
          
          proxy_set_header Host $host;
          
          proxy_read_timeout 86400s;
          
          proxy_send_timeout 86400s;
      
      }
          
      
  • 0-RTT 使用建议
    • ssl_early_data on; 仅在确认业务可容忍重放攻击风险时开启,并配合业务层去重/幂等等策略
  • 证书与续期
    • Let’s Encrypt 证书默认有效期90天,务必配置自动续期与定时任务,避免中断
  • 安全头与浏览器策略
    • 建议启用并长期设置 HSTS(如:max-age=63072000; includeSubDomains; preload),提交至浏览器预加载列表前确保全站稳定可达 HTTPS

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: nginx ssl在centos上的最佳实践是什么
本文地址: https://pptw.com/jishu/770013.html
如何在CentOS上配置Filebeat的日志发送频率 如何在centos上为nginx配置https

游客 回复需填写必要信息