oct*_*bus 3 openssh software-installation
这篇文章是关于应用 OpenSSL 的最新补丁来保护我们的 443 端口网络流量,而不是使用 ssh 登录这些系统。
我openssl-1.0.1g.tar.gz
从这里为我的运行 CentOS 6.5 的 Linux 工作站获取了最新的 OpenSSL tarball 源补丁,并构建了补丁,包括
./config; make; make test; make install # as root
这安装在/usr/local/ssl
.
在将补丁应用到我们的生产系统之前,我想在一个安全的地方证明补丁。但是,在运行完所有内容后,我被难住了。这
./config, make, make test, and make install
步骤完成没有错误。
如何检查是否安装了最新的 OpenSSL?
以下是来自各种答案的测试版本的结果:
openssl version -a
OpenSSL 1.0.1e-fips 11 Feb 2013
built on: Tue Apr 8 02:33:43 UTC 2014
platform: linux-elf
Run Code Online (Sandbox Code Playgroud)
序言:正如在问题中所观察到的,openssl 默认安装到/usr/local/ssl
. 我的建议是使用./config --prefix=/usr/local shared
(注意“共享”之前的空格),以便它安装在那里(并构建共享库,libssl
),而不是它自己的私有子目录。如果你不这样做,你将不得不将文件添加到/etc/ld.so.conf.d
与/usr/local/ssl/lib
它(请参阅下面的意义/etc/ld.so.conf.d
的文件),并添加/usr/local/bin
到$PATH
。
您需要运行ldconfig
aftermake install
将库添加到链接器缓存。如果这不起作用,请继续阅读。
make install
可能默认情况下转到/usr/local
,这应该优先但可能不会。因此,您可以保留发行版的 openssl 安装以避免混淆包管理器和先决条件,但仍然使用您自己的本地构建版本作为默认版本。去检查:
ldd $(which ssh) | grep libssl
Run Code Online (Sandbox Code Playgroud)
如果您没有得到任何输出,则您ssh
是静态链接的,需要重新构建(请参阅 Anton 的回答)。否则,这应该指向您的/usr/local
版本。如果它指向别的东西:
ldconfig -p | grep libssl
Run Code Online (Sandbox Code Playgroud)
该/usr/local
版本应该被显示,但之后其他一些之一。如果是这样,请跳到下面的“/usr/local/lib 没有优先级”。如果没有,请确保/usr/local
通常在链接器路径中:
ldconfig -p | grep "/usr/local"
Run Code Online (Sandbox Code Playgroud)
如果没有,grep -r "/usr/local" /etc/ld.so.conf.d
. 如果不存在,请添加一个文件以使用一行/etc/ld.so.conf.d
调用00-local.conf
:
/usr/local/lib
Run Code Online (Sandbox Code Playgroud)
运行ldconfig
(无开关)并再次执行此操作。
找到添加路径的链接器缓存配置文件:
grep -r "/usr/local" /etc/ld.so.conf.d
Run Code Online (Sandbox Code Playgroud)
如果它不存在,您将必须添加一个如上所述的文件。假设是这样,问题在于文件是按字典顺序处理的。例如,如果 的内容/etc/ld.so.conf.d
是:
addtheselibraries.conf
libc.conf
Run Code Online (Sandbox Code Playgroud)
并且libc.conf
包含/usr/local/lib
但addtheselibraries.conf
包含,例如/usr/lib
,1则后者优先。如果/usr/local/lib
文件不包含任何其他内容,只需使用将取代其他文件的内容重命名即可;数字先行,所以000-whatever
很好。
因为您可以完全控制/usr/local/lib
,所以它应该优先于发行版包管理器使用的任何路径(通常是这样)。
1. /usr/lib 是默认编译到链接器中的,但它和其他标准系统位置(/lib 等)是最后添加的,这允许您取代它们。由于这些,有时(例如)/usr/lib
被添加到 .conf 文件中,以使其取代其他一些 .conf 文件。