linux /centos 中OpenSSL升级方法详解

转载 2015年11月18日 22:01:35
OpenSSL升级前段时间出现天大bug了,这样导致大家都急着去升级OpenSSL来初安全了,但是很多的朋友在家linux并不知道如何去升级OpenSSL了,下面我整理了一文章大家一起参考一下。

相关软件下载地址
Apache:http://httpd.apache.org/
Nginx:http://nginx.org/en/download.html
OpenSSL:http://www.openssl.org/
openssl-poc
附件说明
PoC.py : 漏洞利用测试PoC脚本
showssl.pl:OpenSSL动态库版本检测脚本
安装OpenSSL步骤

由于运营环境不同,以下过程仅供参考。openssl属于系统应用,被较多应用依赖,由于环境不同等因素,请先在测试环境进行充分测试。
从官方下载最新版本的opensssl库
wget https://www.openssl.org/source/openssl-1.0.1g.tar.gz
解压下载的openssl压缩包
tar -zxvf openssl-1.0.1g.tar.gz
进入解压后的openssl文件夹
cd openssl-1.0.1g
执行文件夹中的config文件,这里openssl的安装目录默认是/usr/local/ssl(由于系统环境差异路径可能不一致,下同),注意添加zlib-dynamic参数,使其编译成动态库

 代码如下 复制代码
./config shared zlib-dynamic
config完成后执行 make 命令
make
make 命令执行完后再执行 make install 命令,安装openssl
make install
重命名原来的openssl命令
mv /usr/bin/openssl  /usr/bin/openssl.old
重命名原来的openssl目录
mv /usr/include/openssl  /usr/include/openssl.old
将安装好的openssl 的openssl命令软连到/usr/bin/openssl
ln -s /usr/local/ssl/bin/openssl  /usr/bin/openssl
将安装好的openssl 的openssl目录软连到/usr/include/openssl
ln -s /usr/local/ssl/include/openssl  /usr/include/openssl
修改系统自带的openssl库文件,如/usr/local/lib64/libssl.so(根据机器环境而定) 软链到升级后的libssl.so
ln -s /usr/local/ssl/lib/libssl.so /usr/local/lib64/libssl.so
执行命令查看openssl依赖库版本是否为1.0.1g:
strings /usr/local/lib64/libssl.so |grep OpenSSL
在/etc/ld.so.conf文件中写入openssl库文件的搜索路径
echo "/usr/local/ssl/lib" >> /etc/ld.so.conf

使修改后的/etc/ld.so.conf生效 

ldconfig -v


------------------------------------------------------------------------------------------------------------

Centos6.5 的是在/usr/lib/libssl.so  和/usr/lib/libssl.so.1.0.1e

其中/usr/lib/libssl.so是/usr/lib/libssl.so.1.0.1e的软连接

只需要把/usr/local/ssl/lib/libssl.so.1.0.0替换为/usr/lib/libssl.so.1.0.1e即可。

mv /usr/lib/libssl.so.1.0.1e  /usr/lib/libssl_so.1.0.1e_bak

cp  /usr/local/ssl/lib/libssl.so.1.0.0  /usr/lib/libssl.so.1.0.1e

此时ll /usr/lib/libssl*,结果为

[root@localhost ~]# ll /usr/lib/libssl*
-rwxr-xr-x  1 root root 246760 Nov 23  2013 /usr/lib/libssl3.so
lrwxrwxrwx. 1 root root     16 Oct 20 09:51 /usr/lib/libssl.so -> libssl.so.1.0.1e
lrwxrwxrwx. 1 root root     16 Oct 20 09:51 /usr/lib/libssl.so.10 -> libssl.so.1.0.1e
-r-xr-xr-x  1 root root 416609 Nov 18 07:01 /usr/lib/libssl.so.1.0.1e
-rwxr-xr-x  1 root root 422448 Jul 23 12:03 /usr/lib/libssl_so.1.0.1e_bak

------------------------------------------------------------------------------------------------------------


查看现在openssl的版本是否是升级后的版本
openssl version
更新Webserver的 OpenSSL依赖库
如果webserver在安装编译时加载了openssl,还需对webserver进行重启或者重新编译操作。因webserver安装时分为动态编译和静态编译openssl两种方式,所以具体操作方式也不同。
判断webserver是否为动态编译ssl的两种方法


通过ldd命令查看依赖库


ssl1

ldd查看程序依赖库,存在libssl.so则为动态编译ssl(如上图),反之为静态(如下图):

ssl2

查看编译参数
如输入以命令/usr/sbin/nginx -V,查看nginx的编译参数,参数中不存在--with-openssl则为动态编译ssl的,反之为静态:
ssl3

更新OpenSSL库
a) 如果webserver是动态编译ssl安装的,直接重启apache,nginx等相应webserver服务即可。
b) 如果webserver是静态编译ssl安装的,可参照以下方法更新。


apache静态编译ssl的情况:
源码重新安装apache,使用ssl静态编译:
执行apache的configure文件时,除了业务需要的参数外,需要指定ssl为静态编译

 代码如下 复制代码
./configure --enable-ssl=static --with-ssl=/usr/local/ssl
(openssl的安装路径)

安装apache

 代码如下 复制代码
make && make install

恢复原有apache配置,重启服务即可


nginx静态编译ssl的情况:
源码重新安装nginx,使用ssl静态编译:
执行nginx的configure文件时,除了业务需要的参数外,需要指定ssl为静态编译,编译参数带上--with-openssl便表明为静态编译ssl

 代码如下 复制代码
./configure  --with-http_ssl_module --with-openssl=/usr/local/ssl
(openssl的安装路径)

安装nginx

 代码如下 复制代码
make && make install

恢复原有nginx配置,重启服务即可
如有其他使用openssl的情况,参照apache和nginx的解决方式。


测试漏洞是否存在
使用附件PoC.py根据脚本提示检测是否存在漏洞。
如:
测试https://192.168.0.1漏洞是否存在执行命令如下

 代码如下 复制代码
python PoC.py -p 443,8443 192.168.0.1

检测动态库libssl.so版本
检测当前进程使用的libssl.so版本
执行附件showssl.pl检查脚本,无信息输出或无漏洞版本openssl输出,表示升级成功;如输出中有unknown,请业务自查libssl.so.1.0.0的版本是否是受影响的版本。
(详情见附件)

 代码如下 复制代码
#!/usr/bin/perl -w
my @listInfo = `lsof |grep libssl|awk '{print $1" "$2" "$NF}'|sort -u`;
foreach my $info (@listInfo)
{
my ($procName, $procPid, $libPath) = split(/s/, $info);
next if (!defined($procName) || !defined($procPid)|| !defined($libPath));
my $version = `strings $libPath|grep -E "^OpenSSL [0-9]+.[0-9]+"`;
chomp $version;
if ($version =~ /s*OpenSSLs*1.0.1[a-f]{0,2}/)
{
print "$procName($procPid) : $libPath ($version).n";
}
}

检测系统使用的libssl.so版本
执行命令:

 代码如下 复制代码
strings /usr/local/lib64/libssl.so |grep OpenSSL

查看openssl依赖库版本是否为1.0.1g
注:/usr/local/lib64/libssl.so 路径仅供参考,由具体机器环境决定,参考升级步骤

CentOS之——升级openssl为最新版

wget http://www.openssl.org/source/openssl-1.0.1h.tar.gz tar zxvf openssl-1.0.1h.tar.gz cd opens...

CentOS升级Openssl至openssl-1.1.0c

1、查看原版本 openssl version 2、解压安装 tar zxf openssl-1.1.0c.tar.gz cd openssl-1.1.0c ./config sha...

linux升级OpenSSL

1、当前系统版本 -sh-4.1$ cat /etc/redhat-release CentOS release 6.5 (Final) -sh-4.1$ uname -m x86_64 -sh...

Centos6.5安装、升级openssl

2016年9月份的时候苹果公司要求ios app需要使用https安全网络协议,虽然不强制,但是现在人们对于安全越来越重视,所以使用https来做网络数据传输势在必行。 感觉到了时间的紧迫,现在想要...

linux升级OpenSSL

1、当前系统版本 [plain] view plain copy  -sh-4.1$ cat /etc/redhat-release    CentOS releas...
  • doIt999
  • doIt999
  • 2016年04月15日 13:00
  • 9133

安装openssl和openssl-devel

方法一、直接安装 yum install openssl openssl-devel 方法二、下载源码编译安装 以下借鉴了他人的安装方法。 1.下载 wget https://www.opens...

linux openssl 升级

下载地址https://www.openssl.org/source/ fox.风选择下载版本一定要选择适合你当前软件的版本 例如当前 我的版本是 1.0.X版 这里选择 https://ww...
  • wljk506
  • wljk506
  • 2016年11月14日 09:50
  • 494

centos 7.2 的openssl升级过程

1、查看源版本 [root@~~~]# openssl version -a OpenSSL 1.0.1e-fips 11 Feb 2013 built on: Mon Jun 29 ...
  • libsyc
  • libsyc
  • 2017年10月23日 13:51
  • 134

openssl升级后 libssl.so.10缺失及版本问题

centos7升级openssl后yum,wget等都不能用缺失 libssl.so.10
  • uniom
  • uniom
  • 2017年01月05日 14:11
  • 7138

Centos 7安装OpenSSL 1.1.0f版遇到缺失 libssl.so.1.1问题

Centos 7安装OpenSSL 1.1.0f版遇到缺失 libssl.so.1.1问题的简单有效解决办法。
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux /centos 中OpenSSL升级方法详解
举报原因:
原因补充:

(最多只允许输入30个字)