【问题标题】:How to upgrade OpenSSL in CentOS 6.5 / Linux / Unix from source?如何从源代码升级 CentOS 6.5 / Linux / Unix 中的 OpenSSL?
【发布时间】:2014-05-22 01:11:12
【问题描述】:

如何在 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

【问题讨论】:

  • 他们没有官方的二进制包(仍然有安全更新)吗?
  • 谢谢 Thilo,但我想更新到最新版本
  • sudo yum update openssl.
  • 现在我有了,OpenSSL 1.0.1e-fips 2013 年 2 月 11 日构建于:2014 年 4 月 8 日星期二 02:39:29 UTC,请问它是补丁版本吗?

标签: linux security ssl openssl centos


【解决方案1】:
./config --prefix=/usr --openssldir=/usr/local/openssl shared

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

  $ ./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/

【讨论】:

  • 非常感谢,jmq我用你的代码又测试过了,成功了
  • 现在我有了,OpenSSL 1.0.1e-fips 2013 年 2 月 11 日构建于:2014 年 4 月 8 日星期二 02:39:29 UTC,请问它是补丁版本吗?
  • 受影响的版本是从 1.0.1-1.0.1f,这意味着 1.0.1e 仍然受到 Heartbleed 漏洞的影响。
  • 检查使用rpm -qa openssl而不是使用openssl version,看看你是否在版本末尾有_5.7,如果它在那里,那么你是安全的。参考这个:centosblog.com/…
  • 至少在我的 Centos 6.5 上,我必须在 config 命令中添加另一个 -fPIC 开关。
【解决方案2】:

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

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

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

【讨论】:

  • 你的建议更好。我只是想告诉他如何在他的问题的上下文中构建代码。他列出了构建步骤并询问出了什么问题。此外,这里是修复通知的链接:rhn.redhat.com/errata/RHSA-2014-0376.html你把它从你的帖子中删除了。
  • 谢谢 Alex,我现在能做什么?我可以撤消吗?
  • 我已经通过这个命令“yum reinstall openssl”重新安装了openssl,我现在应该做些什么吗?
  • 我的 openssl 版本现在:OpenSSL 1.0.1e-fips 2013 年 2 月 11 日,我的操作系统:CENTOS 6.5 x86_64 标准
  • OpenSSL 1.0.1e-fips 2013 年 2 月 11 日构建于:2014 年 4 月 8 日星期二 02:39:29 UTC
【解决方案3】:

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

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

您需要在更新后重启 Apache。或者更好的是,如果可能的话,重启盒子,这样所有使用 OpenSSL 的应用程序都会加载新版本。

【讨论】:

  • 注意 sudo yum update openssl 在 CentOS 5 中不起作用。引用另一篇 SO 帖子:CentOS 5 没有比 0.9.8 更新的 openssl 官方包,因此您无法升级系统包到 1.0.1。如果您在 CentOS 5 服务器上需要 1.0.1,您可以自己编译/打包它,但如果不重新编译系统上的其他所有内容,您就无法替换 0.9.8 包/文件。
  • No repos enabled。不过,我确实有一个 OpenSSL 版本。那我应该怎么做才能使用yum呢?
  • @Pathros 你需要configure your yum repos
【解决方案4】:

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

它会自动下载和更新 openssl-1.0.1e-16.el6_5.7 的反向移植版本,该版本已由 RedHat 修补并禁用心跳。

要验证更新,只需检查更新日志:
# 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。

【讨论】:

  • 谢谢。这是最正确的答案。不要手动更新 openSSL。
  • 使用该命令,您会被告知由于 Red Hat 的扩展更新政策,过时版本是可用的最新版本。
【解决方案5】:

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

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

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

【讨论】:

    【解决方案6】:

    要手动编译 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/

    【讨论】:

    • 像魅力一样工作!谢谢!
    • 最佳答案!完美运行。
    • 由于“权限被拒绝”错误,安装 openssl 1.1 时无法正常工作。当我向 openssl 目录和所有子对象提供权限 chmod 777 时效果很好。 make install 要求我使用sudo
    • 确实做一个符号链接比做一个新的构建操作要容易得多
    【解决方案7】:

    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】:

      这很容易!您正在下载二进制文件?下载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 中的 repo 只是 yum update openssl-1.0.1g 很老很有价值

      【讨论】:

        【解决方案9】:

        您还可以使用以下命令检查本地更改日志以验证 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】:

          我的做法是:

          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 
          

          【讨论】:

          【解决方案11】:

          我同意,在 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
          

          【讨论】:

            猜你喜欢
            • 2016-09-29
            • 1970-01-01
            • 2014-02-25
            • 1970-01-01
            • 2017-05-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多