为什么要升级?

很多网站的 TLS 都是由 OpenSSL 实现,而 OpenSSL 和很多程序一样不断的有漏洞被发现,比如大名鼎鼎的 Heartbleed 心脏出血漏洞导致众多服务器和客户端,都可能因此而受到攻击。所以升级 OpenSSL 是很有必要的。

开始升级!

大多的 Centos 自带的 Openssl 非常老旧,比如我的腾讯云自己的源也没有及时更新,所以我们采用自己编译的方式升级。
(本文在Centos7的基础上讲解,其他系统自行修改。)
输入 openssl version -a 可以查看 OpenSSL 版本

20160730231218

我这里系统自带1.0.1e版本,在Qualys SSL Labs’s SSL Server Test中会提示不安全。

当前的最新版本 OpenSSL 可以在 OpenSSL官网 查询到。今天以1.0.2h版本为例,如有更新的版本下面请自行变动。

安装GCC
yum install gcc -y

下载最新版
wget -c https://www.openssl.org/source/openssl-1.0.2-latest.tar.gz

解压
tar zxvf openssl-1.0.2-latest.tar.gz

进入解压后的目录
cd openssl*

配置编译参数
./config --prefix=/usr/local/openssl

编译安装
make && make install

备份原来的OpenSSL(也是将老版本移动开,如果不移开下一步可能会出错)
mv /usr/bin/openssl /usr/bin/openssl.old mv /usr/include/openssl /usr/include/openssl.old

配置软链
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl

将 OpenSSL 的动态链接库地址写入动态链接装入器(dynamic loader)
echo "/usr/local/openssl/lib">>/etc/ld.so.conf

重新加载动态链接库
ldconfig -v

再次查看 OpenSSL 版本
openssl version -a

20160731221357

如果安装成功,就会显示当前的新版本1.0.2h

大功告成! 不过还是推荐编译 Nginx 的时候加入 OpenSSL 库! 这样替换系统中的库可能导致其他问题