moooooong Ответов: 1

Проблемы с использованием динамических библиотек SSL.


Как я могу использовать другой libssl.so библиотека в программе, которая ссылается на libcrypto.so.10?

целевая ОС : centos 6.8

1. проверка целевых разделяемых библиотек "a.out"
[корень@centos69 Цуй]# лдд есть.из
linux-vdso.so.1 => (0x00007ffe52fed000)
libdl.so.2 => /lib64/libdl.so.2 (0x000000358a200000)
libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x0000003594600000)
libc.so.6 => /lib64/libc.so.6 (0x0000003589a00000)
/lib64/ld-linux-x86-64.so.2 (0x0000003589200000)
libz.so.1 => /lib64/libz.so.1 (0x0000003589600000)

2. Вот код, который я написал
ssl = dlopen("/usr/local/my/libssl.so", RTLD_LAZY);//`  i wanna use!!!!
	if (!ssl) {
		fprintf(stderr, "%s\n", dlerror());
		exit(1);
	}

	hd1 = dlopen("/usr/lib64/libssl.so.10", RTLD_LAZY);
	if (!ssl) {
		fprintf(stderr, "%s\n", dlerror());
		exit(1);
	}

	SSL_library_init_1= (FN_SSL_LIBRARY_INIT) LibLoader_GetProcAddress(ssl, "SSL_library_init");
	printf("SSL_library_init_1 [%x]\n", SSL_library_init_1);
	SSL_library_init_1();//` Die!!!!!!

	SSL_library_init_2= (FN_SSL_LIBRARY_INIT) LibLoader_GetProcAddress(hd1, "SSL_library_init");
	printf("SSL_library_init_2 [%x]\n", SSL_library_init_2);
	SSL_library_init_2();


Что я уже пробовал:

Как я могу использовать другой libssl.so библиотека в программе, которая ссылается на libcrypto.so.10?

1 Ответов

Рейтинг:
12

Jochen Arndt

Почему?

Цель использования общих библиотек заключается в том, чтобы всегда использовалась самая новая версия. Это не должно быть изменено; особенно для соответствующих безопасности библиотек, таких как OpenSSL.

Использование старой библиотеки с фиксированной версией может сделать ваше приложение небезопасным или даже больше не работать, когда старая версия будет удалена обновлением.

Кроме того, обе библиотеки принадлежат OpenSSL и зависят друг от друга. Поэтому вы не можете использовать разные версии. Просто свяжись с ним -lssl. libssl использует функции из libcrypto так что он автоматически включается в процесс связывания.