GNU/Linux >> Znalost Linux >  >> Linux

nejsou k dispozici žádné informace o verzi (vyžaduje /usr/bin/ssh)

Problém:libssl.so.1.0.0 a libcrypto.so.1.0.0 nejsou k dispozici žádné informace o verzi varování/chyba.

Po mnoha výzkumech, čase a úsilí (trvalo týdny) jsem nakonec udělal toto...

V adresáři, kde jste skončili s extrahováním zdrojového kódu pro vaši verzi openssl 1.0.1h (mělo by fungovat i pro jiné verze.) vytvořím soubor s názvem openssl.ld

Do tohoto souboru vložte toto...

OPENSSL_1.0.0 {
    global:
    *;
};

uložte. Nyní zadejte...

make clean

(Jen pro jistotu, že začínáme znovu.)

Nyní k té opravdu děsivé části...

./config --prefix=/usr/local --openssldir=/usr/local/openssl shared -Wl,--version-script=openssl.ld -Wl,-Bsymbolic-functions

Pak...

make
make test
make install
ldconfig

A to by mělo stačit. (Je to tak jednoduché. Nevyžaduje se žádné záplatování.)

Toto řešení jsem aplikoval na Debian Wheezy jak 32, tak 64bitové verze. A udělali pozorování. 64bitová verze se automaticky nastaví na novou verzi libssl.so.1.0.0 a libcrypto.so.1.0.0 soubory, které jsou vytvořeny v /usr/local/lib adresář. 32bitová verze ne. Což je důvod, proč jsem si zpočátku myslel, že 32bitová verze Debian Wheezy tímto problémem netrpí, ale jakmile získáte 32bitovou verzi, budete moci používat nové knihovny openssl v /usr/local/lib dir.

Pomocí ldd Příkaz k otestování, jaké knihovny binární soubory používají, byl také neocenitelný při zjišťování tohoto.


Zkompiloval jsem a nainstaloval openssl. Poté jsem nainstaloval ssh přes apt-get.

Pravděpodobně se jedná o dvě různé verze OpenSSL. Pravděpodobně budete v pořádku, protože 1.0.0 je binárně kompatibilní s 1.0.1, 1.0.2 atd. (nebude však binárně kompatibilní s 1.1.0).

Vaše ssh pravděpodobně používá verzi OpenSSL v /usr/lib/x86_64-linux-gnu/ . Měli byste použít LD_PRELOAD abyste se ujistili, že se používá vaše verze OpenSSL (samozřejmě za předpokladu binární kompatibility).

Pokud nechcete používat LD_PRELOAD a přátelé, pak postavte ssh ze zdrojů. Nezapomeňte zadat rpath abyste zajistili, že editor odkazů použije vaši verzi OpenSSL, nikoli verzi systému. Tedy vaše LDFLAGS by měl obsahovat něco jako -Wl,-rpath,<path to your openssl> . To je doplněk k obvyklému -lcrypto , -lssl a -L<path to your openssl> .

Pokud používáte Mac OS X, mějte na paměti, že možnosti linkeru jako -Bstatic a -rpath jsou tiše ignorovány. Setkáte se se záhadnými pády kvůli nekompatibilním binárním souborům, protože OS X poskytuje 0.9.8.

nejsou k dispozici žádné informace o verzi

Pokud jde o žádné informace o verzi, netuším. ssh můžete použít buď OPENSSL_VERSION_NUMBER v době kompilace nebo SSLeay /SSLeay_version za běhu. Viz OPENSSL_VERSION_NUMBER(3) pro podrobnosti.

Jak tuto chybu opravit?

Možná to čtu špatně, ale nikde v příspěvku nevidím chybu.


Linux
  1. Proč /bin/sh ukazuje na /bin/dash a ne /bin/bash?

  2. Konflikty Node.js:/sbin/node vs /usr/bin/node?

  3. povolení odepřeno pro skladatele v /usr/local/bin/

  1. Kdy mám použít /dev/shm/ a kdy /tmp/?

  2. Rozdíl mezi /bin a /usr/bin

  3. Přesunutý obsah /bin do /usr/bin, je možné vrátit zpět?

  1. Měly by weby žít ve /var/ nebo /usr/ podle doporučeného použití?

  2. Co je /usr/bin/[?

  3. #!/bin/sh vs #!/bin/bash pro maximální přenositelnost