У меня есть старое серверное приложение, для которого требуются libssl.so.0.9.6 и libcrypto.so.0.9.6.
Моя проблема в том, что в моей системе сейчас есть libssl.so.1.0.0a и libcrypto.so.1.0.0a. Я попытался создать символическую ссылку на новые библиотеки, и это избавило меня от ошибки при запуске серверного приложения, однако, как только приложение получает новое соединение, оно сразу вылетает. Однако это не дает никаких ошибок относительно того, почему. Я также попытался извлечь эти библиотеки из старого RPM и поместить их в правильное место на сервере Linux, и у меня возникла та же проблема.
Я отключил SELinux и отключил iptables. У меня правильно перенаправлены порты, но проблема не устранена. На другом сервере Linux я использую старую версию CentOS с требуемой версией openssl, и она работает без проблем.
Я думаю, что сузил его до проблемы с версией openssl. Кто-нибудь знает, почему это может происходить, или если openssl обратно совместим с такой старой версией.
Между версиями OpenSSL 0.9.6 и 1.0.0 существуют некоторые несовместимые двоичные изменения в соответствии с таблица совместимости.
...
Я являюсь автором этого отчета, поэтому не стесняйтесь задавать любые вопросы в комментариях.
Нет libssl
версии довольно жестко указаны; не так много гарантий совместимости ABI между версиями (отсюда и то, почему имена так специфичны).
У вас должна быть возможность установить обе версии бок о бок (на моей рабочей станции Debian установлены обе версии libssl0.9.8 и libssl1.0.0), и если вы это сделаете правильно он должен работать. Я не могу сказать, правильно ли вы это сделали, но я бы начал с удаления хитрых символических ссылок и возврата всего, что вы сделали, а затем начну с запуска ldd
в двоичном файле, чтобы определить, что ему нужно, распаковать / установить нужные библиотеки, а затем перейти оттуда.