今天去查了一下 TLS 1.3,发现已经完全 Final 了。这么说 TLS 1.3 已经完善的差不多了。
于是,博主带着一种“尝鲜”的想法进行升级,最终成功。
我会在这篇文章中写出大概的升级思路。
以下方案在博主的 CentOS 7 VPS 上成功,全程使用 root 用户。
第一步 升级 OpenSSL
已经发布的 OpenSSL 1.1.1 系列支持 TLS 1.3。然而大部分服务器装的 OpenSSL 预装的都是 OpenSSL 1.0.2,因此必须升级 OpenSSL。
不要想着用 yum 升级 OpenSSL。这最多只能升级到 OpenSSL 1.0.2。因此必须手动编译升级。
先来看下现在装的 OpenSSL 版本:
openssl version
# 输出: OpenSSL 1.0.2k-fips 26 Jan 2017
现在的版本是 1.0.2。我们现在手动给它升级。
先去 OpenSSL Releases 找到 1.1.1 版本,然后 wget 下载下来。比如,我选择的是 OpenSSL 1.1.1a 版本。
下面是全程所用命令。
wget https://github.com/openssl/openssl/archive/OpenSSL_1_1_1a.tar.gz # 下载
tar -zxf OpenSSL_1_1_1a.tar.gz # tar.gz 解压
# 注意这里下载的是 tar.gz 格式,如果是其他格式请自行寻找解压命令
# 下面是编译安装和配置的命令。
cd openssl-OpenSSL_1_1_1a
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib # 编译配置
make
make install # 标准安装命令
# 强制使用新版 OpenSSL
vim /etc/profile.d/openssl.sh # 创建相关文件
# /etc/profile.d/openssl.sh 文件内容
pathmunge /usr/local/openssl/bin
# 保存退出(:wq),重新登录后生效
# 环境变量相关
# 如果收到下面错误就需要将 OpenSSL 库文件夹添加到环境变量。
# ./openssl: error while loading shared libraries: libssl.so.1.1: cannot open
# shared object file: No such file or directory
vim /etc/ld.so.conf # 打开环境变量文件
# 添加下面这行到上面打开的文件中
/usr/local/openssl/lib
# 保存退出(:wq)
ldconfig -v # 刷新环境变量
完成配置后,再来看下 OpenSSL 版本。
openssl version
# 输出: OpenSSL 1.1.1a 20 Nov 2018
这一步完美完成。
第二步 升级 Apache
提醒: 这步只适用于 Apache 用户。Nginx 用户请自寻他法。
从 Apache 2.4.36 开始,Apache 就能用 TLS 1.3 了。
然而博主的 Apache 是 2.4.33 版本的。所以就算是装了 OpenSSL 1.1.1 也没法使用 TLS 1.3。
所以,接下来更新 Apache。
本来想翻下 LNMP 安装脚本有没有升级 Apache 的选项,结果大跌眼镜。(好吧这个脚本主要针对 Nginx 服务端的)
看来只能手动编译更新了。
首先到这里找到最新的 Apache 版本(不要担心肯定是比 2.4.36 还高的版本)。
接下来就上命令了:
service httpd stop # 记得先关闭 Apache 再升级,以防出错
# 命令中使用的是文章编写时的最新版本 2.4.38,真实升级时也使用这个版本。
wget https://www-us.apache.org/dist/httpd/httpd-2.4.38.tar.gz
tar -zxf httpd-2.4.38.tar.gz # 解压(tar.gz 格式)
cd httpd-2.4.38
cp /usr/local/apache/build/config.nice config.nice # 平滑升级: 使用旧版本 Apache 编译参数
# 在开始编译之前可能需要补齐 apr 和 apr-util 库。否则 config 的时候会收到下面错误:
# configure: error: Bundled APR requested but not found at ./srclib/. Download and
# unpack the corresponding apr and apr-util packages to ./srclib/.
# 有关内容我会再摸一篇文章介绍。这里照做即可
wget https://www-us.apache.org/dist/apr/apr-1.6.5.tar.gz
wget https://www-us.apache.org/dist/apr/apr-util-1.6.1.tar.gz
tar -zxf apr-1.6.5.tar.gz
tar -zxf apr-util-1.6.1.tar.gz
mv apr-1.6.5 srclib/apr
mv apr-util-1.6.1 srclib/apr-util
./config.nice # 编译配置
make
make install # 万能编译安装命令
service httpd start # 开启 Apache 服务
接下来检查下 Apache 的版本。
/usr/local/apache/bin/httpd -v
# Server version: Apache/2.4.38 (Unix)
# Server built: Feb 12 2019 18:41:24
OK, well done.
然后...
现在,站点应该优先使用 TLS 1.3 了。
完成升级 Apache 后,博主的网站就已经能用 TLS 1.3 了。
然后还有什么...享受 TLS 1.3 带来的更先进的 https 加密啊(#逃)。
后记
- 注意这只是思路,注意变通。
- 有问题/错误纰漏请在评论里反馈。
博主有前途啊,想起了我年轻时(虽然现在也不老)建站的日子。强烈安利一下openSUSE Leap,用官方源的包。CentOS的很多包太老了,自己编译的话如果不能及时打补丁容易出安全问题。
啊这…现在去改服务器的操作系统估计需要的不是一点半点的时间。