2018/12/20更新

现在的宝塔已经支持nginx1.15了,所以只需要宝塔-软件管理-nginx切换版本到nginx1.15
然后在网站的配置文件加上TLSv1.3就可以了
配置文件路径/www/server/panel/vhost/nginx/xxx.confxxx表示你的网站域名

前言


我原来宝塔安装的是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

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.3
ssl_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
canary
选择final。重启浏览器,打开你的站点,就可以看到TLS1.3了

最后修改:2022 年 04 月 18 日
感谢您的支持