ubuntu nginx ssl安全设置指南
导读: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.pem 与 privkey.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 与不安全套件(如 RC4、DES、MD5、匿名套件)
- 仅启用 TLS1.2/1.3 与 ECDHE 前向保密套件
- 安全响应头
- 启用 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
