2018/12/20更新
现在的宝塔已经支持nginx1.15了,所以只需要宝塔-软件管理-nginx切换版本到nginx1.15
然后在网站的配置文件加上TLSv1.3就可以了
配置文件路径/www/server/panel/vhost/nginx/xxx.conf
xxx表示你的网站域名
前言
我原来宝塔安装的是Nginx1.8,OpenSSL好像也比较老,curl依赖貌似也比较老,升级到Nginx1.15.2,OpenSSL升级到1.1.1-pre8
安装OpenSSL
- 下载OpenSSL pre9版本
wget https://www.openssl.org/source/openssl-1.1.1-pre9.tar.gz
- 升级OpenSSL
tar xvf openssl-1.1.1-pre9.tar.gz
rm -f openssl-1.1.1-pre9.tar.gz
cd openssl-1.1.1-pre9
./config --prefix=/usr shared zlib-dynamic
rm -f /usr/bin/openssl
rm -f /usr/include/openssl
make && make install
ln -sf /usr/include/openssl/*.h /usr/include/
ln -sf /usr/lib/openssl/engines/*.so /usr/lib/
ldconfig -v
echo -e "openssl_installed" >> /www/server/lib.pl
注意:可能因为宝塔版本原因,OpenSSL的位置可能不同
看一下版本对不对openssl version
升级curl
- 添加一个新的repo
vim /etc/yum.repos.d/city-fan.repo
在里面添加内容
[CityFan]
name=City Fan Repo
baseurl=http://nervion.us.es/city-fan/yum-repo/rhel$releasever/$basearch/
enabled=1
gpgcheck=0
- 升级
yum clean all
yum install libcurl
安装Nginx1.15.2
- 下载Nginx
wget http://nginx.org/download/nginx-1.15.2.tar.gz
- 解压
tar -zxvf nginx-1.15.2.tar.gz
- 编译
./configure \
--user=www \
--group=www \
--prefix=/www/server/nginx \
--with-openssl=/usr/local/ssl/ssl \
--add-module=/www/server/nginx/src/ngx_devel_kit \
--add-module=/www/server/nginx/src/ngx_cache_purge \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_gzip_static_module \
--with-http_gunzip_module \
--with-ipv6 \
--with-http_sub_module \
--with-http_flv_module \
--with-http_addition_module \
--with-http_realip_module \
--with-http_mp4_module \
--with-ld-opt=-Wl,-E \
--with-openssl=../openssl \
--with-openssl-opt='enable-tls1_3 enable-weak-ssl-ciphers'
注意:第五行OpenSSL的位置,我这是自己装的openssl的位置,可能和你们不一样
./configure之后会有 ipv6 的警告, 这个可以不用管。make -j 2
make -j 2代表同时使用 2 线程编译,根据自己几个核心判断,如果中途报错,改成make
即可
- 寻找已存在的Nginx
find / -name nginx
路径为/www/server/nginx/sbin/nginx的应该就是宝塔安装的Nginx了,执行/www/server/nginx/sbin/nginx -V
看一下版本是不是就是宝塔安装的那个,可以看到 nginx 的版本和参数都和宝塔 nginx 的一样, 可以确定这就是宝塔的 nginx。
- 使用 cp 命令将编译好的新版本覆盖掉宝塔的 nginx。
cp objs/nginx /www/server/nginx/sbin/nginx
注意:如果提示文件正忙需要先去宝塔停止 nginx 之后再覆盖, 覆盖后再打开 nginx, 如果没有提示文件正忙直接覆盖后去面板点击重载配置 - 检验
输入nginx -v
看看是不是升级的版本
开启TLS1.3
宝塔的路径是/www/server/panel/vhost/nginx
如图在ssl_protocols
后面加TLSv1.3ssl_ciphers
后面写
TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-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;
浏览器配置
这时你打开Chrome浏览器按F12,选择security,看到的仍然是TLS1.3,这时因为浏览器还没有适配tls1.3 final。你可以下载一个Chrome canary版本,图标是金色的。
打开canary,地址栏输入chrome://flags
选择final。重启浏览器,打开你的站点,就可以看到TLS1.3了