Apache 升级 TLS 1.3 思路
本文最后更新于 749 天前,其中的信息可能已经有所发展或是发生改变。

今天去查了一下 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 加密啊(#逃)。

后记

  1. 注意这只是思路,注意变通。
  2. 有问题/错误纰漏请在评论里反馈。

评论

  1. 4 年前
    2020-9-15 0:44:53

    博主有前途啊,想起了我年轻时(虽然现在也不老)建站的日子。强烈安利一下openSUSE Leap,用官方源的包。CentOS的很多包太老了,自己编译的话如果不能及时打补丁容易出安全问题。

    • 博主
      戚先生
      4 年前
      2020-9-18 1:08:12

      啊这…现在去改服务器的操作系统估计需要的不是一点半点的时间。

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇