Problema:libssl.so.1.0.0
e libcrypto.so.1.0.0
nessuna informazione sulla versione disponibile avviso/errore.
Dopo molte ricerche, tempo e impegno (ci sono volute settimane), ecco cosa ho finalmente fatto...
Nella directory in cui hai finito per estrarre il codice sorgente per la tua versione di openssl 1.0.1h (dovrebbe funzionare anche per altre versioni). Creo un file chiamato openssl.ld
In questo file metti questo...
OPENSSL_1.0.0 {
global:
*;
};
salvalo.Ora digita...
make clean
(Solo per essere sicuri che stiamo ricominciando da capo.)
Ora per la parte davvero sbalorditiva...
./config --prefix=/usr/local --openssldir=/usr/local/openssl shared -Wl,--version-script=openssl.ld -Wl,-Bsymbolic-functions
Allora...
make
make test
make install
ldconfig
E questo dovrebbe bastare. (È così semplice. Non è richiesta alcuna patch.)
Ho applicato questa soluzione a Debian Wheezy entrambe le versioni a 32 e 64 bit. E ho fatto un'osservazione. La versione a 64 bit passa automaticamente al nuovo libssl.so.1.0.0
e libcrypto.so.1.0.0
file che vengono creati nel /usr/local/lib
directory. La versione a 32 bit no. Questo è il motivo per cui all'inizio avevo pensato che la versione a 32 bit di Debian Wheezy non soffrisse di questo problema, ma lo fa una volta ottenuta la versione a 32 bit per utilizzare le nuove librerie openssl nel /usr/local/lib
dir.
Usando il ldd
Il comando per testare quali librerie stanno usando i binari è stato prezioso anche per capire questo.
Ho compilato e installato il file openssl. Successivamente, ho installato ssh tramite apt-get.
Queste sono probabilmente due diverse versioni di OpenSSL. Probabilmente starai bene dato che 1.0.0 è binario compatibile con 1.0.1, 1.0.2, ecc. (non sarà binario compatibile con 1.1.0, tuttavia).
Il tuo ssh
sta probabilmente usando la versione di OpenSSL in /usr/lib/x86_64-linux-gnu/
. Dovresti usare LD_PRELOAD
per assicurarti che venga utilizzata la tua versione di OpenSSL (presupponendo la compatibilità binaria, ovviamente).
Se non vuoi usare LD_PRELOAD
e amici, quindi crea ssh
dalle fonti. Assicurati di specificare un rpath
per garantire che l'editor di link utilizzi la tua versione di OpenSSL, non la versione del sistema. Cioè, il tuo LDFLAGS
dovrebbe includere qualcosa come -Wl,-rpath,<path to your openssl>
. Questo è in aggiunta al consueto -lcrypto
, -lssl
e -L<path to your openssl>
.
Se utilizzi Mac OS X, tieni presente che le opzioni del linker come -Bstatic
e -rpath
vengono silenziosamente ignorati. Incontrerai misteriosi arresti anomali dovuti a binari incompatibili perché OS X fornisce 0.9.8.
nessuna informazione sulla versione disponibile
Per quanto riguarda nessuna informazione sulla versione, non ne ho idea. ssh
può usare sia OPENSSL_VERSION_NUMBER
in fase di compilazione o SSLeay
/SSLeay_version
in fase di esecuzione. Vedi OPENSSL_VERSION_NUMBER(3)
per i dettagli.
Come correggere questo errore?
Forse sto interpretando male le cose, ma non vedo un errore da nessuna parte nel post.