获取域名 SSL 证书只是网络安全等第一步。要让您的服务器既安全又快速的传递信息,还需要针对 Nginx 进行精细化配置。

1. SSL证书基础路径配置

将您在 CertificateHub 申请并下载的证书上传至服务器对应目录,如 /etc/nginx/ssl/ 目录下,并添加证书文件路径配置。

server {
    listen 443 ssl;
    server_name example.com;

    # 证书文件路径
    ssl_certificate /etc/nginx/ssl/fullchain.crt;
    ssl_certificate_key /etc/nginx/ssl/private.key;
}

2. 开启 TLS 1.2 和 TLS 1.3 协议

TLS 1.2/TLS 1.3 移除了过时的加密算法,握手速度提升了 40% 以上。

server {
    listen 443 ssl;
    server_name example.com;

    # 证书文件路径
    ssl_certificate /etc/nginx/ssl/fullchain.crt;
    ssl_certificate_key /etc/nginx/ssl/private.key

    # 开启 TLS 1.2 和 TLS 1.3 协议
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers off;
            

3. 配置HSTS(HTTP Strict Transport Security) 安全增强策略

开启 HSTS 后,浏览器将强制仅通过 HTTPS 访问您的目标网站,有效防御协议降级攻击,效防止一些潜在的中间人攻击,包括 SSL 剥离,会话 cookie 窃取等。

server {
    listen 443 ssl;
    server_name example.com;

    # 证书文件路径
    ssl_certificate /etc/nginx/ssl/fullchain.crt;
    ssl_certificate_key /etc/nginx/ssl/private.key

    # 开启 TLS 1.2 和 TLS 1.3 协议
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers off;

    # 配置 HSTS 安全增强策略
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
            

4. Nginx SSL/TLS 安全配置最佳实践

server {
    listen 443 ssl http2; # 启用 HTTP/2 以提升性能
    server_name example.com;

    # 1. 证书与私钥配置
    ssl_certificate /path/to/fullchain.pem; # 包含中间证书的证书链 [12]
    ssl_certificate_key /path/to/privkey.pem;

    # 2. 协议与密码套件 (安全与性能平衡)
    ssl_protocols TLSv1.2 TLSv1.3; # 禁用 SSLv2/v3, TLS1.0/1.1 [10]
    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'; # 强加密套件 [11]
    ssl_prefer_server_ciphers on; # 优先使用服务器端密码套件 [10]

    # 3. 会话恢复与缓存 (减少握手延迟)
    ssl_session_timeout 1d; # 会话超时时间
    ssl_session_cache shared:SSL:10m; # 共享会话缓存,10m 约可容纳 40,000 个会话
    ssl_session_tickets off; # 禁用会话票据以增强前向安全性 [10]

    # 4. OCSP Stapling (提升HTTPS速度和安全性)
    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 8.8.8.8 8.8.4.4 valid=300s; # 配置 DNS 解析器
    resolver_timeout 5s;

    # 5. 安全请求头 (A+评级必需)
    add_header Strict-Transport-Security "max-age=63072000" always; # 启用 HSTS [8]
    add_header X-Frame-Options SAMEORIGIN; # 防止点击劫持
    add_header X-Content-Type-Options nosniff; # 防止 MIME 类型嗅探
    add_header X-XSS-Protection "1; mode=block"; # 启用 XSS 保护
}

# 6. HTTP 到 HTTPS 强制跳转
server {
    listen 80;
    server_name example.com;
    return 301 https://$server_name$request_uri;
}