BT宝塔新的开发版本支持了TLSv1.3自动配置,网站可以用TLSv1.3

原创 小新  2019-04-21 14:44:05  阅读 334 次 评论 0 条

今天升级了BT面板,发现更新日志中,有一条是增加了TLSv1.3自动配置(需要nginx1.15或tengine2.3)。我默默地看了一下我的nginx版本,原来,我的只是nginx1.4,除了nginx版本外,你的openssl也要最新的openssl1.1.1才行,openssl1.0是不支持TLSv1.3的。我又再上服务器看了下,默默的想。先不搞服务器的,先用虚拟主机搞一下先,迟点有时间了再处理服务器的,因为,服务器的nginx除了BT面板默认的配置外,我还做了一些额外的设置。
如果你的服务器已经是nginx1.15+openssl1.1.1了,那你就可以直接使用TLVs1.3了。这样,你的服务器和网站会更安全,网站速度会更快。

BT宝塔新的开发版本支持了TLSv1.3自动配置,网站可以用TLSv1.3

如果服务器使用的是BT面板的话,可以直接在面板上“软件商店”这里找到你的nginx进行卸载重装1.15.6就可以了。openssl的话也会更新到最新的版本的,如果你的服务器并不是使用BT宝塔面板的话,那是要用源码编译安装进行升级。

还有一点的就是,如果是使用BT面板,但是nginx有自行定义或增加个别的模块的话,那你可以参考一下:《让你的网站支持google的brotli压缩》这里的方法进行操作。

下载最新版openssl: 

https://www.openssl.org/source/

opensll安装

#tar -zxvf openssl-1.1.1b.tar.gz
#cd openssl-1.1.1b

指定安装目录、配置文件目录

# ./config shared zlib --prefix=/usr/local/openssl-1.1.1b --openssldir=/usr/local/openssl-1.1.1b/ssl
# perl configdata.pm --dump    # 显示安装信息 #
#make                                       # 编译 #
#make install                            # 安装 #

备份并添加新的符号链接

#mv /usr/bin/openssl /usr/bin/openssl-old
#ln -s /usr/local/openssl-1.1.1b/bin/openssl /usr/bin/opens
sl

查看新版本

#openssl version -a

显示出新的版本信息就成功了,如果没有,显示下面的错误

报错:

./openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

原因:

未找到对应的库文件,可以用下面的方法进行判断

#ldd /usr/bin/openssl

显示有2个not found 

libssl.so.1.1 => not found

libcrypto.so.1.1 => not found

解决的方法,两种,我个人是使用了最两种方法解决的。推荐第二种,因为够快,不行的话,可以使用第一种方法。

1、关联新的库文件

#cd /etc/ld.so.conf.d/

#vi openssl-1.1.1b.conf    #新建立一个文件,内容如下

/usr/local/openssl-1.1.1b/lib

#ldconfig -v     #使修改后的/etc/ld.so.conf生效

再执行ldd /usr/bin/openssl 显示OK

2、可以做一个软连接

假如你的libssl.so.1.1 文件在/usr/local/openssl-1.1.1b/lib/下面,可以这样做

#ln -s /usr/local/openssl-1.1.1b/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
#ln -s /usr/local/openssl-1.1.1b/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

这时openssl version  显示出新版本号就OK了。

如果要删除软连接,直接删掉就好

#rm /usr/lib64/libcrypto.so.1.1


下载最新的nginx

#wget http://nginx.org/download/nginx-1.15.12.tar.gz
#tar zxf nginx-1.15.12.tar.gz


如果原本编译安装过 Nginx,可以输入nginx -V,查看以前的 configure 配置。在后面加上所需参数进行编译。

关键参数:

添加--with-openssl=../openssl-1.1.1  来指定 OpenSSL 路径,注意将--with-openssl参数改为自己的 OpenSSL 文件夹地址。

添加--with-openssl-opt="enable-tls1_3 enable-weak-ssl-ciphers"

我的完整 configure 命令如下,请类比进行。

./configure \
--user=www \
--group=www \
--prefix=/usr/local/nginx \
--with-http_stub_status_module \
--with-threads \
--with-file-aio \
--with-pcre-jit \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_gzip_static_module \
--with-http_sub_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_realip_module \
--with-http_addition_module \
--with-stream \
--with-stream_ssl_module \
--with-stream_ssl_preread_module \
--with-stream_realip_module \
--with-http_slice_module \
--with-http_geoip_module \
--with-google_perftools_module \
--with-openssl=../openssl-1.1.1 \
       --with-openssl-opt="enable-tls1_3 enable-weak-ssl-ciphers"

configure 完成后,输入以下语句开始编译make && make install

配置 Nginx 虚拟主机

将以下内容加入你的 conf 文件的相应位置,替换掉原本的相应内容。由于安全性升级的考虑,我删除了 TLS1 和 TLS1.1。这两个协议已经是很老的了,官方也停止了维护和更新。除此以外,TLS1.3 的新加密套件只能在 TLS1.3 中使用,旧的加密套件不能用于 TLS1.3。似乎所有虚拟主机都要配置才能使用 TLS1.3。

ssl_early_data on;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5;



nginx -t看看有没有报错,没有报错,重启一下nginx就可以了。

打开浏览器进行验证一下,按F12,如图下所示:

BT宝塔新的开发版本支持了TLSv1.3自动配置,网站可以用TLSv1.3

本文地址:https://mxlog.com/fenxiang/1531.html
版权声明:本文为原创文章,版权归 小新 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

还没有留言,还不快点抢沙发?