nginx SLL 安全配置规范

TLS 中常用的 AES 加密 加密强度往往被认为是很高的。但前一阵子爆出的BEAST攻击,对所有TLS1.0中所有的区块加密算法都构成了威胁【包括AES、CAMELLIA等。这些算法在实际应用中需要将需要加密的数据切分成若干块。并对每一块进行加密,最后一块需要填充够足够的长度】。

配置进阶

配置赫尔曼密钥
      
        openssl dhparam -out dhparam.pem 2048 // 在 ssh 运行, openssl 生成 2048 位的密钥而不是当作参数写入 nginx.conf 文件。

        ssl_dhparam /path/to/dhparam.pem; //在 .conf 中配置
      
    
禁止不安全的 SSL 协议,使用安全协议
      
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
      
    
禁止已经不安全的加密算法
      
        ssl_ciphers 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4';
      
    
缓解 BEAST 攻击
      
        ssl_prefer_server_ciphers on;
      
    
启用 HSTS
此举直接跳过 301 跳转,还降低了中间人攻击的风险!配置在 .conf 中即可
      
        add_header Strict-Transport-Security max-age=15768000;
      
    
301 跳转
80 端口跳转到 443 端口
      
        server {
          listen 80;
          add_header Strict-Transport-Security max-age=15768000;
          return 301 https://www.yourwebsite.com$request_uri;
        }
      
    
缓存连接凭据
      
        ssl_session_cache shared:SSL:20m;
        ssl_session_timeout 60m;
      
    
OCSP 缝合
      
        ssl_stapling on;
        ssl_stapling_verify on;
        ssl_trusted_certificate /etc/nginx/cert/trustchain.crt;
        resolver 233.5.5.5 233.6.6.6 valid=300s;