GNU/Linux >> Tutoriels Linux >  >> Linux

aucune information de version disponible (requise par /usr/bin/ssh)

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.


Linux
  1. Comment Linux gère-t-il plusieurs séparateurs de chemins consécutifs (/home////nom d'utilisateur///fichier) ?

  2. Linux – Fusionner /usr/bin et /usr/sbin dans /bin (gnu/linux) ?

  3. Quelle est la différence entre #!/usr/bin/env bash et #!/usr/bin/bash ?

  4. autorisation refusée pour composer dans /usr/local/bin/

  5. cmake --version pointe vers /usr/bin/cmake tandis que cmake pointe vers /usr/local/bin

Linux – /sbin/init n'existe pas ?

Installer les binaires dans /bin, /sbin, /usr/bin et /usr/sbin, interactions avec --prefix et DESTDIR

Quand dois-je utiliser #!/bin/bash et quand #!/bin/sh ?

Déplacement du contenu de /bin vers /usr/bin, possible d'annuler ?

Les sites Web doivent-ils vivre dans /var/ ou /usr/ selon l'utilisation recommandée ?

Qu'est-ce que /usr/bin/[ ?