Encontrando libssl no Linux de um cliente

1

Estamos usando uma biblioteca que precisa carregar libssl em uma versão 1.0.* . Não funciona com libssl.so.1.1 . Precisamos que funcione em qualquer sistema Linux.

Tentamos carregar várias versões e isso geralmente funciona, mas no sistema de um cliente há apenas o seguinte:

/usr/lib64/libssl.so.1.1.0g
/usr/lib64/libssl.so.10
/usr/lib64/libssl.so.1.0.2m
/usr/lib64/libssl.so.1.1

Estamos tentando carregar libssl.so.1.0 e libssl.so.1.0.2 , mas não encontramos libssl.so.1.0.2m por causa do " m " final.

Gostaria de saber qual é o esquema de nomenclatura da libssl, se houver alguma?

Precisamos realmente fornecer nossa própria versão ou existe uma maneira melhor?

Devemos fazer um loop de libssl.so.1.0.2z para libssl.so.1.0.2a ? Devemos varrer manualmente o caminho da biblioteca?

    
por maaartinus 01.02.2018 / 09:52

1 resposta

2

Não sei ao certo como você está abrindo libssl - suponho dlopen() ?

A pesquisa em uma lista codificada de caminhos de diretório para uma biblioteca parece bastante frágil - seria melhor deixar o vinculador dinâmico fazer o trabalho para você. Talvez a análise da saída de ldconfig -p valha a pena tentar? Em um sistema Debian, vejo o seguinte:

$ ldconfig -p|grep ssl
libssl.so.1.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libssl.so.1.1
libssl.so.1.0.2 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libssl.so.1.0.2

Em um sistema RHEL 7.4:

$ ldconfig -p|grep ssl
libssl3.so (libc6,x86-64) => /lib64/libssl3.so
libssl.so.10 (libc6,x86-64) => /lib64/libssl.so.10

Note que no sistema Debian a biblioteca está em /usr/lib/x86_64-linux-gnu , enquanto que no sistema RHEL está em /lib64 (observe também os nomes de bibliotecas amplamente variáveis). A menos que você use algo como a saída de ldconfig , você precisará pesquisar todos esses caminhos específicos da distribuição se planeja "trabalhar em qualquer sistema Linux". Evidentemente, os caminhos do diretório estão listados em /etc/ld.so.conf , mas acho que usar ldconfig provavelmente ainda é mais fácil.

    
por 01.02.2018 / 10:35