Problem:libssl.so.1.0.0
und libcrypto.so.1.0.0
Keine Versionsinformationen verfügbar Warnung/Fehler.
Nach viel Recherche, Zeit und Mühe (dauerte Wochen) habe ich schließlich Folgendes getan ...
In dem Verzeichnis, in dem Sie den Quellcode für Ihre Version von openssl 1.0.1h extrahiert haben (sollte auch für andere Versionen funktionieren.), erstelle ich eine Datei namens openssl.ld
In diese Datei fügen Sie Folgendes ein...
OPENSSL_1.0.0 {
global:
*;
};
speichern. Jetzt eintippen...
make clean
(Nur um sicherzugehen, dass wir neu anfangen.)
Nun zum wirklich verblüffenden Teil...
./config --prefix=/usr/local --openssldir=/usr/local/openssl shared -Wl,--version-script=openssl.ld -Wl,-Bsymbolic-functions
Dann...
make
make test
make install
ldconfig
Und das sollte es tun. (Es ist so einfach. Kein Patchen erforderlich.)
Ich habe diese Lösung auf die 32- und 64-Bit-Versionen von Debian Wheezy angewendet. Und habe eine Beobachtung gemacht. Die 64-Bit-Version verwendet automatisch den neuen libssl.so.1.0.0
und libcrypto.so.1.0.0
Dateien, die im /usr/local/lib
erstellt werden Verzeichnis. Die 32-Bit-Version nicht. Deshalb dachte ich zuerst, dass die 32-Bit-Version von Debian Wheezy nicht unter diesem Problem leidet, aber sobald Sie die 32-Bit-Version haben, können Sie die neuen Openssl-Bibliotheken in /usr/local/lib
verwenden dir.
Mit ldd
Der Befehl zum Testen, welche Bibliotheken die Binärdateien verwenden, war ebenfalls von unschätzbarem Wert, um dies herauszufinden.
Ich habe das openssl kompiliert und installiert. Danach habe ich ssh über apt-get installiert.
Dies sind wahrscheinlich zwei verschiedene Versionen von OpenSSL. Sie werden wahrscheinlich in Ordnung sein, da 1.0.0 binärkompatibel mit 1.0.1, 1.0.2 usw. ist (es wird jedoch nicht binärkompatibel mit 1.1.0 sein).
Ihr ssh
verwendet wahrscheinlich die Version von OpenSSL in /usr/lib/x86_64-linux-gnu/
. Sie sollten LD_PRELOAD
verwenden um sicherzustellen, dass Ihre Version von OpenSSL verwendet wird (natürlich unter der Annahme der Binärkompatibilität).
Wenn Sie LD_PRELOAD
nicht verwenden möchten und Freunde, dann bauen Sie ssh
aus Quellen. Achten Sie darauf, einen rpath
anzugeben um sicherzustellen, dass der Link-Editor Ihre Version von OpenSSL verwendet, nicht die Version des Systems. Das heißt, Ihr LDFLAGS
sollte so etwas wie -Wl,-rpath,<path to your openssl>
enthalten . Das ist zusätzlich zum üblichen -lcrypto
, -lssl
und -L<path to your openssl>
.
Wenn Sie Mac OS X verwenden, beachten Sie, dass Linker-Optionen wie -Bstatic
und -rpath
werden stillschweigend ignoriert. Sie werden auf mysteriöse Abstürze aufgrund inkompatibler Binärdateien stoßen, da OS X 0.9.8 bereitstellt.
keine Versionsinformationen verfügbar
Was keine Versionsinformationen betrifft, habe ich keine Ahnung. ssh
kann entweder OPENSSL_VERSION_NUMBER
verwenden zur Kompilierzeit oder SSLeay
/SSLeay_version
zur Laufzeit. Siehe OPENSSL_VERSION_NUMBER(3)
für Details.
Wie kann dieser Fehler behoben werden?
Vielleicht verstehe ich die Dinge falsch, aber ich sehe nirgendwo in dem Beitrag einen Fehler.