Назад | Перейти на главную страницу

Понизьте версию OpenSSL на CentOS 6.5

Приложение, которое я использую, требует OpenSSL 0.9.8, который уже был установлен (точнее, 0.9.8e) на моем CentOS вместе с 1.0.1e, который, к сожалению, используется по умолчанию. Я пытался изменить libssl.so.10 символическая ссылка, указывающая на старую версию, например:

[mckulpa@nuance-vm ~]$ ldd /usr/bin/openssl 
/usr/bin/openssl: /usr/lib64/libssl.so.10: no version information available (required by /usr/bin/openssl)
    linux-vdso.so.1 =>  (0x00007fff2edff000)
    libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007f664457c000)
    libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x0000003927600000)
    libkrb5.so.3 => /lib64/libkrb5.so.3 (0x0000003926200000)
    libcom_err.so.2 => /lib64/libcom_err.so.2 (0x0000003925a00000)
    libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x0000003926e00000)
    libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x0000003927200000)
    libdl.so.2 => /lib64/libdl.so.2 (0x000000391a600000)
    libz.so.1 => /lib64/libz.so.1 (0x000000391aa00000)
    libc.so.6 => /lib64/libc.so.6 (0x0000003919e00000)
    libcrypto.so.6 => /usr/lib64/libcrypto.so.6 (0x00007f664421d000)
    libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x0000003925e00000)
    libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x0000003926a00000)
    libresolv.so.2 => /lib64/libresolv.so.2 (0x000000391be00000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x000000391a200000)
    /lib64/ld-linux-x86-64.so.2 (0x0000003919600000)
    libselinux.so.1 => /lib64/libselinux.so.1 (0x000000391b600000)
[mckulpa@nuance-vm ~]$ export LD_LIBRARY_PATH=~/libs:$LD_LIBRARY_PATH
[mckulpa@nuance-vm ~]$ echo $LD_LIBRARY_PATH 
/home/mckulpa/libs:/usr/local/Nuance/Recognizer_Service/amd64/lib:/usr/local/Nuance/OAM/x86/lib:/usr/local/Nuance/Common/x86/lib:/usr/local/Nuance/Common/amd64/lib
[mckulpa@nuance-vm ~]$ ldd /usr/bin/openssl 
/usr/bin/openssl: /home/mckulpa/libs/libssl.so.10: no version information available (required by /usr/bin/openssl)
    linux-vdso.so.1 =>  (0x00007fff91dbc000)
    libssl.so.10 => /home/mckulpa/libs/libssl.so.10 (0x00007ffe1af50000)
    libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x0000003927600000)
    libkrb5.so.3 => /lib64/libkrb5.so.3 (0x0000003926200000)
    libcom_err.so.2 => /lib64/libcom_err.so.2 (0x0000003925a00000)
    libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x0000003926e00000)
    libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x0000003927200000)
    libdl.so.2 => /lib64/libdl.so.2 (0x000000391a600000)
    libz.so.1 => /lib64/libz.so.1 (0x000000391aa00000)
    libc.so.6 => /lib64/libc.so.6 (0x0000003919e00000)
    libcrypto.so.6 => /usr/lib64/libcrypto.so.6 (0x00007ffe1abd9000)
    libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x0000003925e00000)
    libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x0000003926a00000)
    libresolv.so.2 => /lib64/libresolv.so.2 (0x000000391be00000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x000000391a200000)
    /lib64/ld-linux-x86-64.so.2 (0x0000003919600000)
    libselinux.so.1 => /lib64/libselinux.so.1 (0x000000391b600000)
[mckulpa@nuance-vm ~]$ ls -l libs
total 316
-rwxr-xr-x. 1 mckulpa mckulpa 321224 05-28 14:59 libssl.so.0.9.8e
lrwxrwxrwx. 1 mckulpa mckulpa     16 05-28 15:18 libssl.so.10 -> libssl.so.0.9.8e

но все, что я получаю, это предупреждение, и все же распечатывается версия 1.0.1e:

[mckulpa@nuance-vm ~]$ openssl version
openssl: /home/mckulpa/libs/libssl.so.10: no version information available (required by openssl)
OpenSSL 1.0.1e-fips 11 Feb 2013

Есть идеи, как это сделать правильно?

Копирование отдельных библиотек с других машин - это упражнение, которое почти гарантированно потерпит неудачу, вероятно, странным и трудно диагностируемым образом. Не делайте этого, и если вы должны это сделать, не описывайте это как "установлены"; этот процесс определенно не является установкой.

Кажется, есть openssl098e RPM в базовом репозитории CentOS 6, что означает, что он, скорее всего, также будет в RHEL6. Он будет упакован так, чтобы мирно сосуществовать с основной системой OpenSSL, и, похоже, будет содержать необходимые библиотеки для чего-то, что абсолютно должен есть старая версия. У него нет пользовательского пространства openssl инструмент, но я был бы очень удивлен, если бы это потребовалось вашему приложению.

Попробуйте сделать yum install openssl098e.

Вашему приложению нужен openssl 0.9.8, но нужен ли ему исполняемый файл openssl 0.9.8 или библиотека 0.9.8? (Он пытается запустить openssl или создать ссылку на него?)

Пакет CentOS openssl098e является «версией для совместимости с общей криптографической и TLS-библиотекой» и устанавливает только библиотеки - он не устанавливает исполняемый файл 0.9.8.

Запустите ldd в своем приложении, чтобы узнать, связана ли она с одной из библиотек openssl (libssl и libcrypto). Чтобы увидеть, что пытается запустить ваше приложение, вы можете связать его с strace -fo /tmp/strace.out и ищите строки execv.

Если вашему приложению требуется исполняемый файл openssl, вам нужно перекомпилировать пакет 0.9.8 для CentOS 6.

Если вашему приложению нужна библиотека openssl, проверьте, нужна ли вам версия x86_64 или i686, с помощью ldd application. Если он ищет в / lib64, то yum install yum install openssl098e.x86_64. Если он ищет в / lib, тогда yum install openssl098e.i686.

Если вы хотите openssl 0.9.8 двоичный файл на CentOS 6.5, тогда просто скачайте исходный код отсюда: https://www.openssl.org/source/ , скомпилируйте и установите (инструкция в INSTALL файл в загруженном источнике), и он будет работать нормально.

Не забудьте правильно настроить пути, чтобы вы могли найти этот двоичный файл в ожидаемом месте (/usr/bin/openssl, /usr/local/bin/openssl, и т.д.)