Problème :libssl.so.1.0.0
et libcrypto.so.1.0.0
aucune information de version disponible avertissement/erreur.
Après beaucoup de recherches, de temps et d'efforts (qui m'ont pris des semaines), voici ce que j'ai finalement fait...
Dans le répertoire où vous avez fini par extraire le code source de votre version d'openssl 1.0.1h (devrait également fonctionner pour d'autres versions.), je crée un fichier appelé openssl.ld
Dans ce fichier mettez ceci...
OPENSSL_1.0.0 {
global:
*;
};
enregistrez-le. Saisissez maintenant...
make clean
(Juste pour être sûr que nous commençons à zéro.)
Maintenant, pour la partie vraiment époustouflante...
./config --prefix=/usr/local --openssldir=/usr/local/openssl shared -Wl,--version-script=openssl.ld -Wl,-Bsymbolic-functions
Alors...
make
make test
make install
ldconfig
Et cela devrait le faire. (C'est si simple. Aucun correctif requis.)
J'ai appliqué cette solution aux versions 32 et 64 bits de Debian Wheezy. Et ont fait une observation. La version 64 bits utilise automatiquement par défaut le nouveau libssl.so.1.0.0
et libcrypto.so.1.0.0
fichiers créés dans le /usr/local/lib
annuaire. La version 32 bits ne le fait pas. C'est pourquoi j'avais d'abord pensé que la version 32 bits de Debian Wheezy ne souffrait pas de ce problème, mais c'est le cas une fois que vous obtenez la version 32 bits pour utiliser les nouvelles bibliothèques openssl dans le /usr/local/lib
dir.
Utilisation du ldd
La commande pour tester les bibliothèques utilisées par les binaires a également été inestimable pour comprendre cela.
J'ai compilé et installé le fichier openssl. Après cela, j'ai installé ssh via apt-get.
Il s'agit probablement de deux versions différentes d'OpenSSL. Tout ira probablement bien puisque 1.0.0 est compatible en binaire avec 1.0.1, 1.0.2, etc. (il ne sera cependant pas compatible en binaire avec 1.1.0).
Votre ssh
utilise probablement la version d'OpenSSL en /usr/lib/x86_64-linux-gnu/
. Vous devez utiliser LD_PRELOAD
pour vous assurer que votre version d'OpenSSL est utilisée (en supposant la compatibilité binaire, bien sûr).
Si vous ne voulez pas utiliser LD_PRELOAD
et amis, puis construisez ssh
à partir de sources. Assurez-vous de spécifier un rpath
pour vous assurer que l'éditeur de liens utilise votre version d'OpenSSL, et non la version du système. Autrement dit, votre LDFLAGS
devrait inclure quelque chose comme -Wl,-rpath,<path to your openssl>
. Cela s'ajoute au -lcrypto
habituel , -lssl
et -L<path to your openssl>
.
Si vous utilisez Mac OS X, sachez que les options de l'éditeur de liens telles que -Bstatic
et -rpath
sont silencieusement ignorés. Vous rencontrerez de mystérieux plantages dus à des binaires incompatibles car OS X fournit la version 0.9.8.
aucune information de version disponible
Quant à l'absence d'informations sur la version, je n'en ai aucune idée. ssh
peut utiliser soit OPENSSL_VERSION_NUMBER
au moment de la compilation ou SSLeay
/SSLeay_version
lors de l'exécution. Voir OPENSSL_VERSION_NUMBER(3)
pour plus de détails.
Comment corriger cette erreur ?
Peut-être que j'interprète mal les choses, mais je ne vois aucune erreur dans le message.