Chinaunix

标题: CentOS6编译安装openssl后,如何替换掉rpm安装的openssl [打印本页]

作者: shenyue_sam    时间: 2014-08-18 15:37
标题: CentOS6编译安装openssl后,如何替换掉rpm安装的openssl
系统自带openssl是1.0.1e,有heartbleed漏洞。
  1. # cat /etc/redhat-release
  2. CentOS release 6.5 (Final)
  3. # rpm -q openssl
  4. openssl-1.0.1e-15.el6.x86_64
  5. # rpm -q -changelog openssl|grep CVE-2014-0160
复制代码
下载了openssl-1.0.1i,编译安装。
  1.     export CFLAGS="-fPIC"
  2.     ./config shared no-ssl2 no-ssl3 --openssldir=/usr/local/ssl
  3.     make depend
  4.     make all
  5.     make install
复制代码
生成的so为
  1. # ll /usr/local/ssl/lib/*.so
  2. lrwxrwxrwx. 1 root root 18 Aug 15 12:29 /usr/local/ssl/lib/libcrypto.so -> libcrypto.so.1.0.0
  3. lrwxrwxrwx. 1 root root 15 Aug 15 12:29 /usr/local/ssl/lib/libssl.so -> libssl.so.1.0.0
复制代码
通过修改PATH,可以执行新版本的openssl
  1. # openssl version
  2. OpenSSL 1.0.1i 6 Aug 2014
复制代码
但问题是,如何使新版本的so替换旧版的so?
例如sshd,使用的还是1.0.1e的。
  1. # ldd $(which sshd)|grep -e libcrypto -e libssl
  2.         libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x00007f6eb3e5b000)

  3. # rpm -ql openssl |grep \.so
  4. /usr/lib64/libcrypto.so.1.0.1e
  5. /usr/lib64/libcrypto.so.10
  6. /usr/lib64/libssl.so.1.0.1e
  7. /usr/lib64/libssl.so.10
复制代码
是否是因为sshd已经指定要链接libcrypto.so.10?
  1. # strings $(which sshd)|grep -e crypto -e ssl
  2. libcrypto.so.10
复制代码
是不是要把软链接libcrypto.so.10和libssl.so.10指向新版本的so才行?

作者: q1208c    时间: 2014-08-18 16:32
为什么不升级呢?

  1. $ rpm -q --changelog openssl | grep 0160
  2. - fix CVE-2014-0160 - information disclosure in TLS heartbeat extension
  3. - fix CVE-2014-0160 - information disclosure in TLS heartbeat extension

  4. $ rpm -q openssl
  5. openssl-1.0.1e-16.el6_5.14.x86_64
  6. openssl-1.0.1e-16.el6_5.14.i686
复制代码

作者: shenyue_sam    时间: 2014-08-18 16:59
回复 2# q1208c


    谢谢指点。在局域网搞惯了,没想到用update源。

    不过,还是想知道,如果不用rpm,用源码编译安装的话,如何解决上面问题。希望各位大侠指教。
作者: q1208c    时间: 2014-08-18 17:03
回复 3# shenyue_sam

可以把原来位置的文件全替换掉. 或者 rename 掉. 但不能删除.

rpm -ql 可以列出原包里带来的文件.


   




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2