CentOS 8.1使用编译OpenSSL报错symbol EVP_KDF_* not defined in file libcrypto.so.1.1

在CentOS 8.1 系统上采用之前方式编译安装完OpenSSL后,发现SSH无法使用,提示openssl库有特性不支持:

[[email protected] ~]# ssh -v
ssh: relocation error: ssh: symbol EVP_KDF_ctrl version OPENSSL_1_1_1b not defined in file libcrypto.so.1.1 with link time reference

经过一番查找,是由于自编译的OpenSSL库没有EVP_KDF_*的相关特性导致:

可以看到,自已编译安装的OpenSSL的动态库文件没有EVP_KDF的相关symbol。

经过查寻,OpenSSL官方解释为:EVP_KDF特性为OpenSSL 3.0中添加,RHEL8 / CentOS 8系统中的特性为系统自行添加:

相关网页链接:EVP_KDF说明页,官方Github问题页。

知道原因后,故重启编译安装OpenSSL,强制使其使用自己的动态链接库并将其从系统动态库搜索路径中去除:

tar zxf openssl-1.1.1g.tar.gz -C /usr/local/src/
cd /usr/local/src/openssl-1.1.1g/
CFLAGS="-fPIC -O3" ./config --prefix=/usr/local/openssl shared threads zlib enable-md2 --release -Wl,--enable-new-dtags,-rpath,'$(LIBRPATH)'
make -j `cat /proc/cpuinfo | grep processor | wc -l` && make install

添加了-Wl,–enable-new-dtags,-rpath,’$(LIBRPATH)’选项,其会自动转到LDFLAGS中。

安装完成后,将原先添加的动态库搜索路径去除;然后查看自编译的openssl动态库连接关系和系统自带ssh:

 

《CentOS 8.1使用编译OpenSSL报错symbol EVP_KDF_* not defined in file libcrypto.so.1.1》有2条留言

  1. 我按照你的命令处理之后,我输入命令 ssh -v 还是报错:ssh: relocation error: ssh: symbol EVP_KDF_ctrl version OPENSSL_1_1_1b not defined in file libcrypto.so.1.1 with link time reference

    回复

留下评论

error: Content is protected !!