web-dev-qa-db-ja.com

CentOS6.5でOpenSSLをダウングレードする

私が使用するアプリケーションには、OpenSSL 0.9.8が必要です。これは、残念ながらデフォルトで使用されている1.0.1eと一緒にCentOSにすでにインストールされています(具体的には0.9.8e)。 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

これを適切に行う方法はありますか?

1
byyyk

アプリケーションには0.9.8opensslが必要ですが、0.9.8 openssl実行可能ファイルまたは0.9.8ライブラリが必要ですか? (opensslを実行しようとしていますか、それともリンクしようとしていますか?)

CentOSのopenssl098eパッケージは、「一般的な暗号化とTLSライブラリの互換性バージョン」であり、ライブラリのみをインストールします。0.9.8実行可能ファイルはインストールしません。

アプリケーションに対してlddを実行して、opensslライブラリ(libsslおよびlibcrypto)の1つにリンクしているかどうかを確認します。アプリケーションが何を実行しようとしているのかを確認するには、strace -fo /tmp/strace.outでアプリケーションを追跡し、execv行を探します。

アプリケーションでopenssl実行可能ファイルが必要な場合は、CentOS6用に0.9.8パッケージを再コンパイルする必要があります。

アプリケーションでopensslライブラリが必要な場合は、ldd applicationを使用して、x86_64バージョンとi686バージョンのどちらが必要かを確認します。/lib64を検索している場合は、yum install yum install openssl098e.x86_64。/libを検索している場合は、yum install openssl098e.i686

1
R Perrin

他のマシンから単一のライブラリをコピーすることは、おそらく奇妙で診断が難しい方法で失敗することがほぼ確実な演習です。そうしないでください。必要な場合は、「installed」とは記述しないでください。そのプロセスは間違いなくインストールを構成しません。

CentOS6ベースリポジトリにはopenssl098e RPMがあるようです。つまり、RHEL6にもある可能性が非常に高いということです。メインシステムのOpenSSLと平和的に共存するためにパッケージ化され、絶対に必須古いバージョンを持つために必要なライブラリが含まれているようです。ユーザースペースopensslツールはありませんが、アプリケーションで必要な場合は非常に驚きます。

yum install openssl098eを実行してみてください。

6
MadHatter

CentOS6.5でopenssl 0.9.8バイナリが必要な場合は、ここからソースをダウンロードしてください: https://www.openssl.org/source/ 、コンパイルしてインストールします(手順はダウンロードしたソースのINSTALLファイル)、正常に動作します。

パスを適切に設定することを忘れないでください。そうすれば、そのバイナリを予想される場所(/usr/bin/openssl/usr/local/bin/opensslなど)で見つけることができます。

0
mieciu