2017年04月25日发布的nginx 1.13.0支持了TLSv1.3,而TLSv1.3相比之前的TLSv1.2、TLSv1.1等性能大幅提升。所以我迫不及待地将nginx升级到最新版1.13.0。下面记录如何升级nginx,本文基于CentOS release 6.6,其他的操作系统略有不同。
[root@iteblog.com ~]$ cat /etc/issue CentOS release 6.6 (Final) Kernel \r on an \m [root@iteblog.com ~]$ cat /etc/redhat-release CentOS release 6.6 (Final)
升级nginx主要有两种方法:(1)、自行下载nginx的源码,然后自行编译;(2)、使用yum进行安装。为了简便,本文主要介绍如何通过yum来升级nginx到最新版。
安装最新版Nginx
为yum设置最新的nginx库
首先我们为 yum 设置最新版的 nginx 库,可以编辑 /etc/yum.repos.d/nginx.repo
文件,并在其中添加以下的内容:
[nginx] name=nginx repo baseurl=http://nginx.org/packages/mainline/centos/6/$basearch/ gpgcheck=0 enabled=1
如果你的系统是 CentOS 7.x,可以将上面的 6 换成 7 即可。
当然,如果你觉得这个比较麻烦,你还可以通过下面的命令设置即可:
yum install http://nginx.org/packages/centos/6/noarch/RPMS/nginx-nr-agent-2.0.0-12.el6.ngx.noarch.rpm
通过yum升级nginx到最新版本
安装设置完最新版的 nginx 库之后,我们就可以升级 nginx 了,如下:
[root@iteblog.com ~]$ yum install nginx
安装完成之后,可以通过下面命令查看是否已经安装了最新版的 nginx:
[root@iteblog.com ~]$ nginx -v nginx version: nginx/1.13.0
在nginx中启用TLSv1.3
我们到网站的 nginx 配置中,找到如下的配置:
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:!DES:!MD5:!PSK:!RC4"; ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
我们只需要把 TLSv1.3
加到 ssl_protocols
后面即可:
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:!DES:!MD5:!PSK:!RC4"; ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
保存并重启nginx。
验证nginx是否支持TLS 1.3
我们可以通过 nginx -t
命令来验证nginx是否支持TLS 1.3:
如果nginx支持TLS 1.3,将会输出下面的信息
[root@iteblog.com ~]$ nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
如果nginx不支持TLS 1.3,将会输出下面的信息
[root@iteblog.com /data/log]$ nginx -t nginx: [warn] invalid value "TLSv1.3" in /etc/nginx/conf.d/default.conf:12 nginx: configuration file /etc/nginx/nginx.conf test failed
现在你已经在nginx正确地启用了TLS 1.3;但是遗憾的是,目前还好多类库尚不支持TLS 1.3,比如 OpenSSL。也就是说,虽然我们在nginx启用了TLS 1.3,但实际上最终网站还是使用TLS 1.2 及以下版本进行连接,要等到所有的OS和类库支持TLS 1.3,或许还得等一段时间。
本博客文章除特别声明,全部都是原创!原创文章版权归过往记忆大数据(过往记忆)所有,未经许可不得转载。
本文链接: 【Nginx升级到1.13.0并启用TLSv1.3】(https://www.iteblog.com/archives/2155.html)
如果你觉得麻烦的话,可以按照这个步骤安装nginx,始终安装的是最新发布版:
谢谢,这个和 yum install http://nginx.org/packages/centos/6/noarch/RPMS/nginx-nr-agent-2.0.0-12.el6.ngx.noarch.rpm 效果类似。