打造最强NGINX HTTPS配置 - 开发说
当前位置: 主页 » Nginx » 打造最强NGINX HTTPS配置

打造最强NGINX HTTPS配置

      2019年09月28日   阅读 1,875 次     0 评论   Tags: · · ·

本文向你们展示如何在nginx的web服务器上设置更强的SSL。我们是通过使SSL无效来减弱CRIME攻击的这种方法实现。不使用在协议中易受攻击的SSLv3以及以下版本并且我们会设置一个更强的密码套件为了在可能的情况下能够实现Forward Secrecy,同时我们还启用HSTS和HPKP。这样我们就有了一个更强、不过时的SSL配置并且我们在Qually Labs SSL 测试中得到了A+ 等级。

参考:https://ssl-config.mozilla.org/

NGINX HTTPS评分 :https://www.ssllabs.com/

本站nginx配置详情:


server {
    listen 80;
    listen [::]:80;
    server_name  www.kaifashuo.com kaifashuo.com;
 
    rewrite ^/(.*) https://www.kaifashuo.com/$1 permanent;
}



server {
	listen 443 ssl http2;
	listen [::]:443 ssl http2;
	server_name  www.kaifashuo.com;

	error_log  /var/log/nginx/error.log  crit;

        ssl on;

        ssl_certificate      /etc/letsencrypt/live/kaifashuo.com/fullchain.pem;
        ssl_certificate_key  /etc/letsencrypt/live/kaifashuo.com/privkey.pem;
        ssl_trusted_certificate /etc/letsencrypt/live/kaifashuo.com/chain.pem;
        ssl_dhparam /etc/nginx/ssl/dhparam.pem;

        ssl_protocols TLSv1.2;

        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:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;

        ssl_prefer_server_ciphers on;
        ssl_session_timeout 10m;
        ssl_session_cache shared:SSL:10m;
        ssl_session_tickets off;
        ssl_stapling on;
        ssl_stapling_verify on;
        resolver 8.8.8.8 8.8.4.4  valid=300s;
        resolver_timeout 10s;

        add_header Strict-Transport-Security "max-age=63072000" always;
        root   /home/kaifashuo;

    location / {
        index   index.php index.html index.htm;
        try_files $uri $uri/ /index.php?$args;
    }


       error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location ~ .*\.php(\/.*)*$ {
       
        fastcgi_index index.php;
        fastcgi_param HTTPS on;
        fastcgi_pass   unix:/dev/shm/php7-fpm.sock;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

}

COPY的参数项说明:


listen 监听 443 端口,加上ssl参数;

server_name 当一个主机多个域名时很重要,可以做域名虚拟主机;

SSL 开启ssl

ssl_certificate 证书

ssl_certificate_key 密钥

sl_dhparam
执行 openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048 生成dhparam.pem 后加入改行配置

ssl_session_cache重用加密的会话,通过每个连接给出的唯一标识,服务器知道一个进来的连接是否已经在之前创建过,如果服务器在会话中也已经有会话key,它就能重用。Session ID需要服务器保存会话状态如会话key等,这样下次连接才能复用,这就需要服务器保存很多状态信息,耗费了大量内存Session ID共享复用在nginx可以通过ssl_session_cache设置。

ssl_protocols 开启TLS 版本,注意不要开启 SSL2 SSL3

ssl_ciphersNginx SSL算法,一定要禁用nginx默认的DH算法(译注:Diffie-Hellman key exchange algorithm)是影响SSL性能的最大因素。

ssl_prefer_server_ciphers 和上述配合。

开启 ocsp
ssl_stapling on  ssl_stapling_verify ssl_trusted_certificate
OCSP(Online Certificate Status Protocol)的中文翻译是在线证书状态协议,它是用来检查证书是否有效的。虽然证书一般是有效的,但也可能被撤销,这时就需要实时查询证书的状态,以确保它有效。这个查询如果让浏览器去做,就比较浪费时间,而 OCSP stapling 技术则是让服务器自己查出来,再把状态信息(无法伪造)返回给浏览器,以加快验证过程。

本站环境支持的浏览器版本和SSL Labs评分测试:A+


  • 版权声明:本文版权归开发说和原作者所有,未经许可不得转载。文章部分来源于网络仅代表作者看法,如有不同观点,欢迎进行交流。除非注明,文章均由 开发说 整理发布,欢迎转载,转载请带版权。

  • 来源:开发说 ( https://www.kaifashuo.com/ ),提供主机优惠信息深度测评和服务器运维编程技术。
  • 链接:https://www.kaifashuo.com/1511.html
  • 评论(0

    1. 还没有任何评论,你来说两句吧

    发表回复

    您的邮箱地址不会被公开。 必填项已用 * 标注