Назад | Перейти на главную страницу

Не удается скомпилировать Apache 2.2.21 с поддержкой OpenSSL

Хорошо, у меня плохая пара дней для компиляции Apache 2.2.21 на CentOS 5.7 с помощью следующих команд настройки:

./configure --enable-ssl=shared --with-ssl=/usr/local/openssl

Я скомпилировал из исходников OpenSSL 1.0.0e из исходников:

./config --prefix=/usr/local --openssldir=/usr/local/openssl shared zlib-dynamic

Я пытаюсь запустить Apache, и он возвращается:

httpd: Syntax error on line 54 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/mod_ssl.so into server: /usr/local/apache2/modules/mod_ssl.so: undefined symbol: SSL_get_servername

Если я посмотрю, как связаны библиотеки, то получу:

[root@web1 modules]# ldd mod_ssl.so libssl.so.6 => /lib64/libssl.so.6 (0x00002aaaaace4000) libcrypto.so.6 => /lib64/libcrypto.so.6 (0x00002aaaaaf30000) libdl.so.2 => /lib64/libdl.so.2 (0x00002aaaab281000) libz.so.1 => /lib64/libz.so.1 (0x00002aaaab486000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00002aaaab69a000) libc.so.6 => /lib64/libc.so.6 (0x00002aaaab8b5000) libgssapi_krb5.so.2 => /usr/lib64/libgssapi_krb5.so.2 (0x00002aaaabc0e000) libkrb5.so.3 => /usr/lib64/libkrb5.so.3 (0x00002aaaabe3c000) libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00002aaaac0d1000) libk5crypto.so.3 => /usr/lib64/libk5crypto.so.3 (0x00002aaaac2d4000) /lib64/ld-linux-x86-64.so.2 (0x0000555555554000) libkrb5support.so.0 => /usr/lib64/libkrb5support.so.0 (0x00002aaaac4f9000) libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00002aaaac702000) libresolv.so.2 => /lib64/libresolv.so.2 (0x00002aaaac904000) libselinux.so.1 => /lib64/libselinux.so.1 (0x00002aaaacb19000) libsepol.so.1 => /lib64/libsepol.so.1 (0x00002aaaacd32000)

По сути, я устал компилировать из исходного кода OpenSSL (как 0.9.8r, так и 1e), переустановив yum из репозиториев, сделал make clean и переделывал OpenSSL и Apache много раз, но я не могу заставить его скомпилировать в базу apache или динамически как общий объектный файл.

Что я здесь делаю не так?

Обновление 1:

После выполнения make clean и make distclean, Я изменил конфигурацию с теми же параметрами, что и выше, без какого-либо эффекта.

Config.log находится по адресу Pastebin.

Обновление 2:

Изменение LD_LIBRARY_PATH не повлияло на lib-deps mod_ssl.so.

ОБНОВЛЕНИЕ 3:

Я много раз компилировал и перекомпилировал и проверял с помощью ldconfig что каталог OpenSSL libs находится на моем пути и включен в ld.so.conf. По-прежнему не удается заставить httpd / mod_ssl загрузить библиотеку во время выполнения.

Когда вы скомпилировали Apache, у вас должен быть "--enable-so". Я думаю, у вас должно быть так, потому что модуль so пытается загрузить.

Также после компиляции openssl убедитесь, что система может найти общую библиотеку с помощью "/ sbin / ldconfig -v / usr / local / openssl / lib"

и мне также нравится редактировать /etc/ld.so.conf.d/local.conf, чтобы добавить строку для / usr / local / openssl / lib

Напомню, что openssl по умолчанию не создает разделяемые библиотеки. Я сделаю это:

./Configure --prefix = / usr / local / openssl linux-elf общий

Тогда вам все равно придется выполнить ldconfig, как указано выше. И скажите apache, где найти ssl libs.

Снова возникла та же проблема через несколько минут, поэтому я добавляю:

LDFLAGS=-L/usr/local/ssl/lib

и параметр для ./configure (Apache) изменен с:

--with-ssl=/usr/local/ssl

к

--with-ssl=/usr/local/ssl/lib

и нет его нормально.

ldd mod_ssl.so libssl.so.6 => /lib64/libssl.so.

будет означать, что вы не связываетесь с openssl в / usr / local. выполните «make clean && makedistclean» для обеих сборок apache / openssl, затем перестройте / установите openssl. ./configure [ваши параметры] apache и проверьте его config.log, чтобы убедиться, что он связан с правильной библиотекой openssl.

в качестве альтернативы, предоставьте вывод существующего config.log

Это определенно связано с неправильной установкой OpenSSL, как указывалось ранее. У вас должен быть / usr / local / ssl / lib в ld.so.conf, но попробуйте это с помощью следующей команды настройки Apache:

LDFLAGS=-L/usr/local/ssl/lib \
./configure \
--enable-ssl \
--enable-mods-shared=all \
--with-ssl=/usr/local/ssl

Кроме того, уверены ли вы, что сам OpenSSL компилируется так, как задумано? Может быть, не удалось создать общие библиотеки и вернуться к статическому, но все же успешно компилировать?

Проверьте журналы SELinux. Вы должны пометить двоичные файлы правильным атрибутом SELinux.