鉴于 SSL CVE-2016-2107 漏洞,需要对服务上 OpenSSL 进行升级。

通过 openssl version 得到系统安装的 OpenSSL 版本号:1.0.1e-fip,对应升级版本为 1.0.1t。

1、下载 openssl-1.0.1t

[seasidecrab]# wget https://www.openssl.org/source/openssl-1.0.1t.tar.gz

2、解压

[seasidecrab]# tar -xzvf ./openssl-1.0.1t.tar.gz
[seasidecrab]# cd openssl-1.0.1t/

3、配置

[openssl-1.0.1e]# ./config  --prefix=/usr/local/ssl  --openssldir=/usr/local/ssl

4、编译和安装

[openssl-1.0.1e]# make &&  make install
#建议安装两次,shared 作用是生成动态连接库。
[openssl-1.0.1e]# ./config shared --prefix=/usr/local/ssl --openssldir=/usr/local/ssl
[openssl-1.0.1e]# make clean
[openssl-1.0.1e]# make && make install

在安装成功后,尝试直接 ./config shared 配置安装,版本号显示直接成功了,so...

5、检验是否安装成功

[openssl-1.0.1e]# openssl version
OpenSSL 1.0.1t  3 May 2016

6、重启服务器和 PHP-FPM

我的服务器用是是 httpd (Apache 低版本),直接用 service 指令重启。
因为种种原因,无法直接关闭 httpd 服务,所以 pkill httpd 后再启动。

PHP-FPM 同理也采用 service 启动。

异常处理

openssl version 出现以下异常报错:

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

这是由于 openssl 库的位置不正确造成的。我们可以依次执行以下的命令:

[seasidecrab]# ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
[seasidecrab]# ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

我安装过程中一切顺利,没有出现这个问题。

转自:CentOS平台升级OpenSSL到1.0.1t -过往记忆