Problema:libssl.so.1.0.0
y libcrypto.so.1.0.0
no hay información de versión disponible advertencia/error.
Después de mucha investigación, tiempo y esfuerzo (tomó semanas), esto es lo que finalmente terminé haciendo...
En el directorio donde terminaste extrayendo el código fuente para tu versión de openssl 1.0.1h (también debería funcionar para otras versiones). Creo un archivo llamado openssl.ld
En este archivo pon esto...
OPENSSL_1.0.0 {
global:
*;
};
guárdalo. Ahora escribe...
make clean
(Solo para asegurarnos de que comenzamos de nuevo).
Ahora, la parte realmente alucinante...
./config --prefix=/usr/local --openssldir=/usr/local/openssl shared -Wl,--version-script=openssl.ld -Wl,-Bsymbolic-functions
Entonces...
make
make test
make install
ldconfig
Y eso debería funcionar. (Es muy simple. No se requiere parchear).
He aplicado esta solución a Debian Wheezy en las versiones de 32 y 64 bits. Y he hecho una observación. La versión de 64 bits se establece automáticamente en el nuevo libssl.so.1.0.0
y libcrypto.so.1.0.0
archivos que se crean en el /usr/local/lib
directorio. La versión de 32 bits no. Es por eso que al principio pensé que la versión de 32 bits de Debian Wheezy no sufría este problema, pero lo hace una vez que obtienes la versión de 32 bits para usar las nuevas bibliotecas de openssl en el /usr/local/lib
dir.
Usando el ldd
El comando para probar qué bibliotecas están usando los binarios también fue invaluable para resolver esto.
Compilé e instalé el archivo openssl. Después de eso, instalé ssh a través de apt-get.
Estas son probablemente dos versiones diferentes de OpenSSL. Probablemente estará bien ya que 1.0.0 es compatible en binario con 1.0.1, 1.0.2, etc. (sin embargo, no será compatible en binario con 1.1.0).
Tu ssh
probablemente esté usando la versión de OpenSSL en /usr/lib/x86_64-linux-gnu/
. Deberías usar LD_PRELOAD
para asegurarse de que se esté utilizando su versión de OpenSSL (suponiendo compatibilidad binaria, por supuesto).
Si no desea utilizar LD_PRELOAD
y amigos, luego construye ssh
de fuentes Asegúrese de especificar un rpath
para asegurarse de que el editor de enlaces use su versión de OpenSSL, no la versión del sistema. Es decir, tu LDFLAGS
debe incluir algo como -Wl,-rpath,<path to your openssl>
. Eso es además del habitual -lcrypto
, -lssl
y -L<path to your openssl>
.
Si está en Mac OS X, tenga en cuenta que las opciones del enlazador como -Bstatic
y -rpath
son silenciosamente ignorados. Encontrará bloqueos misteriosos debido a binarios incompatibles porque OS X proporciona 0.9.8.
no hay información de versión disponible
En cuanto a la información de la versión, no tengo ni idea. ssh
puede usar OPENSSL_VERSION_NUMBER
en tiempo de compilación o SSLeay
/SSLeay_version
en tiempo de ejecución. Ver OPENSSL_VERSION_NUMBER(3)
para más detalles.
¿Cómo solucionar este error?
Tal vez estoy leyendo mal las cosas, pero no veo ningún error en ninguna parte de la publicación.