首页主机资讯ubuntu nginx ssl安全设置指南

ubuntu nginx ssl安全设置指南

时间2025-11-25 09:28:03发布访客分类主机资讯浏览233
导读:Ubuntu 上 Nginx SSL/TLS 安全加固与部署指南 一 准备与证书部署 安装与启动 Nginx 更新索引并安装:sudo apt update && sudo apt install nginx 启动并设为...

Ubuntu 上 Nginx SSL/TLS 安全加固与部署指南

一 准备与证书部署

  • 安装与启动 Nginx
    • 更新索引并安装:sudo apt update & & sudo apt install nginx
    • 启动并设为开机自启:sudo systemctl start nginx & & sudo systemctl enable nginx
  • 获取证书(推荐 Let’s Encrypt)
    • 安装 Certbot:sudo apt install certbot python3-certbot-nginx
    • 获取并自动配置证书:sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
    • 证书续期测试:sudo certbot renew --dry-run(Let’s Encrypt 证书有效期为90 天,建议启用自动续期)
  • 手动部署证书(CA 签发或自签名,仅测试可用)
    • 将证书与私钥上传至安全目录(如:/etc/ssl/cert/),证书路径在 Nginx 中通过 ssl_certificate 指定,私钥通过 ssl_certificate_key 指定
    • 自签名示例(测试环境):
      sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048
      -keyout /etc/ssl/private/nginx-selfsigned.key
      -out /etc/ssl/certs/nginx-selfsigned.crt
    • 注意:自签名证书不会被浏览器信任,生产环境请使用受信任 CA 签发证书。

二 基础与强化的 SSL/TLS 配置

  • 推荐的 server 443 配置片段(按需调整域名与证书路径)

    • 启用 TLSv1.2/1.3 与强套件,优先 ECDHE 实现前向保密(FS)
    • 启用 HTTP/2 提升性能
    • 开启 HSTS 强制浏览器使用 HTTPS
    • 关闭版本号暴露,添加常用安全头
    • 配置会话缓存与超时,提升握手性能
    • 可选:开启 OCSP Stapling 加速证书状态校验(需有效 OCSP 响应)
  • 示例

    • 将证书路径替换为你的实际路径(如:/etc/letsencrypt/live/yourdomain.com/fullchain.pemprivkey.pem
    • yourdomain.com 替换为你的域名
    • 保存后执行 sudo nginx -t 校验,再 sudo systemctl reload nginx 生效
  • 说明

    • 套件字符串示例仅保留现代、AEAD 套件;如环境需兼容旧客户端,可在确保禁用不安全协议/套件前提下适度扩展
    • 若使用自签名证书,OCSP Stapling 可能不可用(缺少受信任签发链),可先关闭相关指令以避免告警
  • 参考配置

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

    ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
        
    ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
        
    
    # 协议与套件
    ssl_protocols TLSv1.2 TLSv1.3;
        
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305;
        
    ssl_prefer_server_ciphers on;
        
    
    # 会话复用
    ssl_session_cache shared:MozSSL:10m;
        
    ssl_session_timeout 1d;
        
    
    # 安全头
    add_header Strict-Transport-Security "max-age=31536000;
         includeSubDomains;
         preload" always;
        
    add_header X-Frame-Options "SAMEORIGIN" always;
        
    add_header X-Content-Type-Options "nosniff" always;
        
    add_header X-XSS-Protection "1;
         mode=block" always;
        
    add_header Referrer-Policy "no-referrer-when-downgrade" always;
        
    server_tokens off;
        
    
    # OCSP Stapling(可选)
    ssl_stapling on;
        
    ssl_stapling_verify on;
        
    resolver 1.1.1.1 8.8.8.8 valid=300s;
        
    resolver_timeout 5s;
        
    
    # 站点根目录与反向代理示例
    root /var/www/html;
        
    index index.html;
    
    
    location / {
        
      try_files $uri $uri/ =404;
        
      # 反向代理示例:proxy_pass http://127.0.0.1:3000;
    
    }
    
    

    }

    HTTP → HTTPS 强制跳转

    server { listen 80; server_name yourdomain.com www.yourdomain.com; return 301 https://$host$request_uri; }

三 防火墙与端口

  • 放行 HTTPS(UFW 示例)
    • 允许 Nginx Full(包含 443/80):sudo ufw allow ‘Nginx Full’
    • 如已单独放行 80,可移除:sudo ufw delete allow ‘Nginx HTTP’
    • 查看状态:sudo ufw status
  • 云厂商安全组
    • 在控制台放行 TCP 443,确保公网可达。

四 验证与运维

  • 配置语法检查:sudo nginx -t
  • 重新加载:sudo systemctl reload nginx
  • 在线评测:使用 SSL Labs SSL Server Test 检测评级与漏洞(A+ 为目标)
  • 证书续期
    • 自动续期已默认配置,定期测试:sudo certbot renew --dry-run
    • 续期后重载 Nginx 生效:sudo systemctl reload nginx
  • 常见问题排查
    • 证书链不完整导致浏览器告警:确保 fullchain.pem 包含中间证书
    • 端口未放行:检查 UFW/安全组 与云厂商防火墙
    • 自签名证书不被信任:仅用于测试,生产请更换为受信任 CA 证书。

五 进阶加固与合规建议

  • 协议与套件
    • 禁用 SSLv2/3、TLS1.0/1.1 与不安全套件(如 RC4DESMD5、匿名套件)
    • 仅启用 TLS1.2/1.3ECDHE 前向保密套件
  • 安全响应头
    • 启用 HSTS(建议包含 preload 后再提交浏览器预加载列表)
    • 配置 X-Frame-Options、X-Content-Type-Options、X-XSS-Protection、Referrer-Policy、Content-Security-Policy(CSP 按站点策略细化)
  • 访问与抗攻击
    • 限制请求方法(仅允许 GET/POST/HEAD 等必要方法)
    • 限制单 IP 连接数与速率(如 limit_conn_zone/limit_req_zone
    • 管理后台使用 IP 白名单Fail2Ban 联动
  • 运维与变更
    • 变更前备份配置,变更后执行 nginx -t 与灰度发布
    • 定期关注 CVE 与 OpenSSL/Nginx 安全公告,及时修补与升级。

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


若转载请注明出处: ubuntu nginx ssl安全设置指南
本文地址: https://pptw.com/jishu/755262.html
PHP在Debian上如何进行代码优化 Debian上PHP性能监控工具有哪些

游客 回复需填写必要信息