欢迎关注大数据技术架构与案例微信公众号:过往记忆大数据
过往记忆博客公众号iteblog_hadoop
欢迎关注微信公众号:
过往记忆大数据

Nginx升级到1.13.0并启用TLSv1.3

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)
喜欢 (10)
分享 (0)
发表我的评论
取消评论

表情
本博客评论系统带有自动识别垃圾评论功能,请写一些有意义的评论,谢谢!
(2)个小伙伴在吐槽
  1. 如果你觉得麻烦的话,可以按照这个步骤安装nginx,始终安装的是最新发布版:

    # add nginx source
    rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
    # update and install nginx
    yum update
    yum install nginx
    


    :mrgreen:

    daleyjh2017-05-24 09:39 回复
    • 谢谢,这个和 yum install http://nginx.org/packages/centos/6/noarch/RPMS/nginx-nr-agent-2.0.0-12.el6.ngx.noarch.rpm 效果类似。 :mrgreen:

      w3970907702017-05-24 12:57 回复