Masalah:libssl.so.1.0.0
dan libcrypto.so.1.0.0
tidak ada informasi versi yang tersedia peringatan/kesalahan.
Setelah banyak penelitian, waktu dan usaha, (butuh waktu berminggu-minggu), inilah yang akhirnya saya lakukan...
Di direktori tempat Anda akhirnya mengekstraksi kode sumber untuk versi openssl 1.0.1h Anda (seharusnya berfungsi untuk versi lain juga.) Saya membuat file bernama openssl.ld
Dalam file ini taruh ini...
OPENSSL_1.0.0 {
global:
*;
};
simpan. Sekarang ketik...
make clean
(Hanya untuk memastikan kita memulai dari awal.)
Sekarang untuk bagian yang benar-benar membingungkan...
./config --prefix=/usr/local --openssldir=/usr/local/openssl shared -Wl,--version-script=openssl.ld -Wl,-Bsymbolic-functions
Lalu...
make
make test
make install
ldconfig
Dan itu harus dilakukan. (Ini sangat sederhana. Tidak perlu menambal.)
Saya telah menerapkan solusi ini untuk Debian Wheezy versi 32 dan 64 bit. Dan telah melakukan observasi. Versi 64 bit secara otomatis default ke libssl.so.1.0.0
yang baru dan libcrypto.so.1.0.0
file yang dibuat di /usr/local/lib
direktori. Versi 32 bit tidak. Itulah sebabnya saya awalnya mengira bahwa Debian Wheezy versi 32 bit tidak mengalami masalah ini, tetapi hal itu terjadi setelah Anda mendapatkan versi 32 bit untuk menggunakan pustaka openssl baru di /usr/local/lib
dir.
Menggunakan ldd
perintah untuk menguji pustaka apa yang digunakan binari juga sangat berharga dalam mencari tahu hal ini.
Saya mengkompilasi dan menginstal openssl. Setelah itu, saya menginstal ssh melalui apt-get.
Ini mungkin dua versi OpenSSL yang berbeda. Anda mungkin baik-baik saja karena 1.0.0 adalah biner yang kompatibel dengan 1.0.1, 1.0.2, dll (namun tidak akan kompatibel dengan biner dengan 1.1.0).
ssh
Anda mungkin menggunakan versi OpenSSL di /usr/lib/x86_64-linux-gnu/
. Anda harus menggunakan LD_PRELOAD
untuk memastikan versi OpenSSL Anda sedang digunakan (dengan asumsi kompatibilitas biner, tentu saja).
Jika Anda tidak ingin menggunakan LD_PRELOAD
dan teman-teman, lalu build ssh
dari sumber. Pastikan untuk menentukan rpath
untuk memastikan editor tautan menggunakan versi OpenSSL Anda, bukan versi sistemnya. Artinya, LDFLAGS
Anda harus menyertakan sesuatu seperti -Wl,-rpath,<path to your openssl>
. Itu selain -lcrypto
biasa , -lssl
dan -L<path to your openssl>
.
Jika Anda menggunakan Mac OS X, harap maklum bahwa opsi tautan seperti -Bstatic
dan -rpath
diam-diam diabaikan. Anda akan mengalami crash misterius karena binari yang tidak kompatibel karena OS X menyediakan 0.9.8.
tidak ada informasi versi yang tersedia
Untuk tidak ada informasi versi, saya tidak tahu. ssh
dapat menggunakan OPENSSL_VERSION_NUMBER
pada waktu kompilasi atau SSLeay
/SSLeay_version
saat runtime. Lihat OPENSSL_VERSION_NUMBER(3)
untuk detailnya.
Bagaimana cara memperbaiki kesalahan ini?
Mungkin saya salah membaca sesuatu, tetapi saya tidak melihat kesalahan di mana pun di pos tersebut.