如何在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
答案 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)
答案 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相关的所有服务。