Nginx配置SSL协议

来源:互联网 发布:蜂窝移动数据自动打开 编辑:程序博客网 时间:2024/05/21 20:23

SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。

SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。


以上这些是基本的关于SSL的介绍, 通常来讲既然有安全措施, 就会有相应的破解办法。如果有人找到了方法, 对应的也就有了一个安全漏洞。

近年比较有名的心血漏洞(Heartbleed)漏洞给互联网安全带来了很大的危机, 所幸很快公布了安全补丁措施。下面我来介绍下发现安全传输层漏洞的时候怎么处理。


下面我们从检测一个网址的SSL/TLS是否符合标准或有明显的安全漏洞, 然后进行一些对应的处理。

1.  打开https://myssl.com/输入要检测的网址

    

    检测发现有CVE-2016-2017漏洞, 易受攻击, 套件版本低导致安全系统下降。



2. 解决CVE-2016-2017漏洞

    目前解决的办法, 就是升级OpenSSL模块, 新版中修复了这个问题。在Linux环境中首先要判断Nginx对OpenSSL模块采取的是静态还是动态编译。

    不少服务器使用的Nginx,是静态编译opensssl,直接将openssl编译到nginx里面去了,这就意味着,单纯升级openssl是没有任何效果,Nginx不会加载外部的openssl动态链     接库的,必须将nginx重新编译才可以根治。

    输入命令/usr/sbin/nginx -V查看当前机器的编译配置, 如果没有包含-with-openssl=, 说明是动态编译, 那么只要用yum更新OpenSSl版本, 然后重启Nginx, 相对比较简单。

    

3. 修改Nginx套层协议配置

    打开/etc/nginx/conf.d/*.conf配置文件, 找到监听(listen)开启SSL的server, 如果只配置了证书路径, 那么nignx就会使用默认的安全协议使用配置。

   为了提高安全性, 我们需要设置合适的安全协议。

    将一下配置插入到开启了ssl协议的安全监听端口, 然后reload nginx配置文件即可。

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers  ECDSA:ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!DH:!RC4;
    ssl_prefer_server_ciphers   on;

     

4. 经过以上配置, 我们重新检测当前网址, 查看结果。

     

       

原创粉丝点击