这是我使用的发行版
root@ci-server:~/temp# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 9.5 (stretch)
Release: 9.5
Codename: stretch
安装 openssl 时,我收到以下消息,但使用openssl
只是不起作用
root@ci-server:~/temp# apt-get install openssl
Reading package lists... Done
Building dependency tree
Reading state information... Done
openssl is already the newest version (1.1.0j-1~deb9u1).
0 upgraded, 0 newly installed, 0 to remove and 17 not upgraded.
root@ci-server:~/temp# openssl version
openssl: error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No such file or directory
但libcrypto.so.1.1
在这里被发现
root@ci-server:~/temp# find / -name "libcrypto.so.1.1"
/usr/lib64/libcrypto.so.1.1
ldconfig
内容
root@ci-server:~# cat /etc/ld.so.conf
include /etc/ld.so.conf.d/*.conf
和
root@ci-server:~# ls -l /etc/ld.so.conf.d/
total 12
-rw-r--r-- 1 root root 38 Jan 17 2017 fakeroot-x86_64-linux-gnu.conf
-rw-r--r-- 1 root root 44 Mar 20 2016 libc.conf
-rw-r--r-- 1 root root 68 Jan 14 2018 x86_64-linux-gnu.conf
寻找/usr/lib64
inside/etc/ld.so.conf.d
没有产生任何结果
root@ci-server:~# grep -irl "/usr/lib64" /etc/ld.so.conf.d/
root@ci-server:~#
libcrypto.so.1.1
Debian 9.5 中的预期位置是/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1
, not/usr/lib64
... 并且包含它的包是libssl1.1
,其中包含 OpenSSL 的库;在 Debian 打包中,该openssl
包仅包含配置文件、/usr/bin/openssl
命令/usr/bin/c_rehash
二进制文件和相关的手册页。包(以及任何需要 OpenSSL 库的openssl
东西)取决于libssl1.1
. 这样,如果您不需要openssl
命令行工具并且正在构建例如具有最小可用存储空间的嵌入式系统,包管理允许您只安装库。在 x86_64 架构上全新安装 Debian 9.x 时,
/usr/lib64
甚至不应该存在。它存在的事实表明openssl
可能已经从其他来源安装了另一个副本(可能是通过从另一个主机复制二进制文件,或者通过安装用于其他发行版的数据包)。请运行
dpkg --verify libssl1.1 openssl
以验证系统上的包的libssl1.1
完整性openssl
。输出将列出所有已修改的文件:例如,如果/usr/bin/openssl
输出中列出了二进制文件,您将知道您的系统openssl
已被篡改。最糟糕的情况是您的系统已被黑客入侵,入侵者试图用修改后的版本替换您的 OpenSSL,这会将您的私钥泄露给入侵者。如果是这样,那么入侵者犯了一个错误,可能是通过在您的 Debian 系统上使用一组用于 RHEL/CentOS/Fedora 风格系统(
/usr/lib64
通常使用路径)的库。如果您认为您的系统可能被黑客入侵:不要惊慌。如果您怀疑您的服务器已被黑客入侵, Server Fault 有一个关于如何处理的规范答案。