3proxy icon indicating copy to clipboard operation
3proxy copied to clipboard

Плагин SSL не работает

Open oracleh2 opened this issue 1 year ago • 4 comments

С горем пополам скомпиллировал плагин ССЛ, который не компиллировался по умолчанию. При его использовании получаю ошибку

Sep 04 12:49:23 vps151223 systemd[1]: Stopped 3proxy.service - 3proxy tiny proxy server.
Sep 04 12:49:23 vps151223 systemd[1]: Started 3proxy.service - 3proxy tiny proxy server.
Sep 04 12:49:23 vps151223 3proxy[23992]: /bin/3proxy: symbol lookup error: /libexec/SSLPlugin.ld.so: undefined symbol: OPENSSL_init_ssl
Sep 04 12:49:23 vps151223 systemd[1]: 3proxy.service: Main process exited, code=exited, status=127/n/a
Sep 04 12:49:23 vps151223 systemd[1]: 3proxy.service: Failed with result 'exit-code'.

Гугл рассказал, что этот метод используется в openssl 1.1.0 точно, поэтому поставил вместо 3 версии 1.1.1, но ошибка не ушла и дальше уже у меня не хватает компетенции понять что не так и что мне делать. Подскажите как правильно его скомпиллировать и подключить, пожалуйста.

oracleh2 avatar Sep 04 '24 09:09 oracleh2

+1

usename-Poezd avatar Sep 06 '24 09:09 usename-Poezd

У меня такая ошибка, запускал через docker /bin/3proxy: symbol lookup error: /usr/local/3proxy/libexec/SSLPlugin.ld.so: undefined symbol: COMP_get_type

usename-Poezd avatar Sep 06 '24 10:09 usename-Poezd

OPENSSL_init_ssl есть во всех версиях начиная с 1.1.0, скорей всего у тебя не установлены хидеры/библиотеки OpenSSL, поэтому были проблемы и с компиляцией. В debian/ubuntu это пакет libssl-dev. В других линуксах может быть что-то другое. Установи библиотеки/хидеры и пересобери все с нуля.

z3APA3A avatar Sep 10 '24 10:09 z3APA3A

Так вот для чего в spec-файл Федоры требует openssl-devel, понятно!

13ilya-old avatar Sep 22 '24 16:09 13ilya-old

Тут выше есть еще тема, но продолжу эту. При раскомментированных строках в makefile.linux: SSLPlugin компилируется, но не запускается с OpenSSL 3.0.13 . Ubuntu 24.04 3proxy-0.9.5 /usr/local/bin/3proxy: symbol lookup error: /usr/local/3proxy/libexec/SSLPlugin.ld.so: undefined symbol: COMP_get_type

объяснение от CG:

2. КРИТИЧНЫЙ НЮАНС №1 — порядок библиотек 🔥
ld (GNU linker) обрабатывает библиотеки слева направо.
Правило простыми словами:
Библиотека должна идти ПОСЛЕ объектов, которые используют её символы
В OpenSSL:
libssl зависит от libcrypto
значит libcrypto должна идти ПОСЛЕ libssl

readelf -sW /usr/local/3proxy/libexec/SSLPlugin.ld.so | grep COMP_get_type  пустой вывод

Это значит:
❌ плагин не компилировался с прямым вызовом COMP_get_type
❌ внутри ELF нет undefined-символа

OpenSSL 3 COMP_get_type — legacy-символ
Он:
✔ формально присутствует в libcrypto.so.3
❌ НЕ экспортируется в default provider
❌ доступен только через legacy provider
❌ может быть недоступен при ранней инициализации libssl

То есть:
nm → показывает что символ есть
dlopen(libssl) → символ не резолвится в runtime
Это известная особенность OpenSSL 3.

Также, SSLPlugin нет врелизе 3proxy-0.9.5 для Linux

ewrvp7lv7 avatar Dec 19 '25 12:12 ewrvp7lv7