如何从源代码升级CentOS 6.5 / Linux / Unix中的OpenSSL?

时间:2014-04-09 03:35:57

标签: linux security ssl openssl centos

如何在CentOS 6.5中升级OpenSSL?

我使用过这些命令,但没有发生:

 cd /usr/src
 wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz
 tar -zxf openssl-1.0.1g.tar.gz
 cd openssl-1.0.1g
 ./config
 make
 make test
 make install
 cd /usr/src
 rm -rf openssl-1.0.1g.tar.gz
 rm -rf openssl-1.0.1g

使用此命令后,我得到旧版本

openssl version

11 个答案:

答案 0 :(得分:48)

Red Hat for Enterprise Linux see已将heartbleed漏洞的修复程序反向移植到1.0.1e-16,因此这是CentOS发布的官方修复程序。

使用上游的最新版本(即1.0.1g)替换OpenSSL存在引入功能更改的风险,这些功能更改可能会以不可预测的方式破坏与应用程序/客户端的兼容性,导致系统偏离RHEL,并使您陷入困境用于个人维护该软件包的未来更新。通过使用简单的make config&& amp替换openssl。制造&& make install意味着你也失去了使用rpm来管理该包并对其执行查询的能力(例如,验证所有文件都已存在且尚未修改或权限已更改,而无需更新RPM数据库)。 / p>

我还要提醒一下,加密软件对看似很小的事情(如编译器选项)非常敏感,如果您不知道自己在做什么,可能会在本地安装中引入漏洞

答案 1 :(得分:43)

./config --prefix=/usr --openssldir=/usr/local/openssl shared

尝试使用此配置行来覆盖默认值。当您不使用前缀时,它会在您的设置中默认安装到/ usr / local / ssl前缀。你可能有" / usr / local / ssl / bin / openssl"而不是覆盖/ usr / bin / openssl。您也可以使用/ usr / local作为前缀,但如果您的路径上还没有相应的路径,则需要相应地调整路径。这是INSTALL文档:

  $ ./config
  $ make
  $ make test
  $ make install

 [If any of these steps fails, see section Installation in Detail below.]

This will build and install OpenSSL in the default location, which is (for
historical reasons) /usr/local/ssl. If you want to install it anywhere else,
run config like this:

  $ ./config --prefix=/usr/local --openssldir=/usr/local/openssl

https://github.com/openssl/openssl/blob/master/INSTALL http://heartbleed.com/

答案 2 :(得分:40)

要手动编译OpenSSL,请执行以下操作:

$ cd /usr/src

$ wget https://www.openssl.org/source/openssl-1.0.1g.tar.gz -O openssl-1.0.1g.tar.gz

$ tar -zxf openssl-1.0.1g.tar.gz

$ cd openssl-1.0.1g

$ ./config

$ make

$ make test

$ make install

$ openssl version

如果显示旧版本,请执行以下步骤。

$ mv /usr/bin/openssl /root/

$ ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
openssl version
OpenSSL 1.0.1g 7 Apr 2014

http://olaitanmayowa.com/heartbleed-how-to-upgrade-openssl-in-centos/

答案 3 :(得分:9)

sudo yum update openssl就是你所需要的。

这会带您到openssl-1.0.1e-16.el6_5.7

更新后,您需要 重新启动Apache 。或者更好的是,如果可能的话,重新启动该框,以便所有使用OpenSSL的应用程序都将加载新版本。

答案 4 :(得分:7)

您唯一需要做的就是执行yum update

它将自动下载并更新已被RedHat修补并禁用心跳的openssl-1.0.1e-16.el6_5.7的后移版本。

要验证更新,只需检查更改日志:
# rpm -q --changelog openssl-1.0.1e | grep -B 1 CVE-2014-0160
你应该看到以下内容:
* Mon Apr 07 2014 Tomáš Mráz <tmraz@redhat.com> 1.0.1e-16.7 - fix CVE-2014-0160 - information disclosure in TLS heartbeat extension

确保重启服务器,因为Apache和SSH等重要服务使用openSSL。

答案 5 :(得分:2)

我的方法是:

openssl version
OpenSSL 1.0.1e 11 Feb 2013

wget https://www.openssl.org/source/openssl-1.0.2a.tar.gz
wget http://www.linuxfromscratch.org/patches/blfs/svn/openssl-1.0.2a-fix_parallel_build-1.patch
tar xzf openssl-1.0.2a.tar.gz
cd openssl-1.0.2a
patch -Np1 -i ../openssl-1.0.2a-fix_parallel_build-1.patch
./config --prefix=/usr --openssldir=/etc/ssl --libdir=lib shared zlib-dynamic
make
make install

openssl version
OpenSSL 1.0.2a 19 Mar 2015 

答案 6 :(得分:1)

我同意在95%的情况下,您所需要的只是sudo yum update openssl

但是,如果您需要特定版本的openssl或特定功能(不在CentOS存储库中),您可能需要从源代码编译。这里的其他答案都不完整。 以下是有用的(CentOS 6.9),虽然这可能会导致与已安装的软件不兼容,并且不会自动更新openssl。

https://www.openssl.org/source/

中选择openssl版本

以root用户身份登录:

cd /usr/local/src/

# OPTIONALLY CHANGE openssl-1.1.0f.tar.gz to the version which you want
wget https://www.openssl.org/source/openssl-1.1.0f.tar.gz

sha256sum openssl-1.1.0f.tar.gz  #confirm this matches the published hash

tar -zxf openssl-1.1.0f.tar.gz

cd /usr/local/src/openssl-1.1.0f

./config --prefix=/usr/local --openssldir=/usr/local/openssl
make
make test
make install

export LD_LIBRARY_PATH=/usr/local/lib64

#make export permanent
echo "export LD_LIBRARY_PATH=/usr/local/lib64" > /etc/profile.d/ld_library_path.sh
chmod ugo+x /etc/profile.d/ld_library_path.sh

openssl version  #confirm it works

#recommended reboot here

openssl version  #confirm it works after reboot

答案 7 :(得分:0)

rpm -qa openssl yum clean all && yum update "openssl*" lsof -n | grep ssl | grep DEL cd /usr/src wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz tar -zxf openssl-1.0.1g.tar.gz cd openssl-1.0.1g ./config --prefix=/usr --openssldir=/usr/local/openssl shared ./config make make test make install cd /usr/src rm -rf openssl-1.0.1g.tar.gz rm -rf openssl-1.0.1g

openssl version

答案 8 :(得分:0)

很容易!你正在下载二进制文件?下载rpm最新包  的OpenSSL 1.0.1e-30.el6.x86_64 使用rpm -q openssl检查当前版本是什么。 如果这个比较旧,那么请执行rpm -U openssl-1.0.1e-30.el6.x86_64。 如果yum配置已在repo中更新此包并执行yum update openssl 如果您在RHN的回购只是更新yum openssl-1.0.1g非常古老且具有可测量性

答案 9 :(得分:0)

您还可以使用以下命令检查本地更改日志以验证OpenSSL是否针对此漏洞进行了修补:

rpm -q --changelog openssl | grep CVE-2014-0224

如果未返回结果,则必须修补OpenSSL。

http://www.liquidweb.com/kb/update-and-patch-openssl-for-the-ccs-injection-vulnerability/

答案 10 :(得分:-1)

您应该通过符号链接替换旧的OpenSSL二进制文件:

sudo ln -sf /usr/local/ssl/bin/openssl `which openssl`

请记住,在此过程之后,您应该重新启动服务器或重新启动与OpenSSL相关的所有服务。

相关问题