Как обновить openssl 0.9.8 до 1.0.2 с помощью mod_ssl в Apache 2.2.9

Меня просят перекомпилировать mo_ssl с openssl 1.0.2 в SuseSE11SP3. Тем не менее, я новичок в Suse, но немного знаю Linux.

  • ОС: Suse SE11SP3
  • Openssl: 0.9.8j ‹ — поставляется с оригинальным Suse linux.
  • Веб-сервер: Apache httpd 2.2.9

Вот ограничение у меня есть. Я не могу использовать zypper или rpm, потому что политика безопасности компании не позволяет мне это делать. Это абсурд, вот как это происходит здесь. Еще одно ограничение, которое у меня есть, заключается в том, что эта система используется другими веб-серверами, на которые у меня нет разрешения. Я должен сделать это как можно более локально.

Я хочу, чтобы это произошло, когда я перекомпилирую сервер Apache, мне нравится видеть, что mod_ssl связан с более новой версией библиотеки Openssl.

Итак, я скачал исходный файл Openssl 1.0.2h:

./confgiure --prefix=//PREFIX/openssl --opendir=/PREFIX/openssl
make test
make install

Я успешно установил openssl в локальный каталог.

а затем я попытался перекомпилировать уже существующий httpd2.2.9. поэтому я перешел к исходному файлу в httpd 2.2.9

make clean

export LIBS=-ldl
export LD_LIBRARY_PATH="/PREFIX/openssl"
export LIBS="-L/PREFIX/openssl"
export CPPFLAGS="-I/PREFIX/include/openssl" 

./configure --prefix=/PREFIX/apache22  --enable-so --enable-ssl=ssl -with-ssl=/PREFIX/openssl --enable-module=shared CC=/usr/bin/gcc

make install

Были некоторые ошибки, но я как бы разобрался и скомпилировал. Однако окончательный результат для mod_ssl по-прежнему связан со старой версией Openssl 0.9.8, а не с более новой версией 1.0.2h.

Что я пропустил в этих шагах? Или где я ошибся?


//openssl install
./config -fPIC shared --prefix=/PREFIX/openssl --openssldir=/PREFIX/openssl
make 
make test
make install

// install apache2 

//recompiling after apache2 is installed with openssl 

export LIBS=-ldl
export LD_LIBRARY_PATH="/PREFIX/openssl/lib"
export LDFLAGS="-L/PREFIX/openssl"
export CPPFLAGS="-I/PREFIX/openssl/include/openssl" 
export CFLAGS="-Wl,-rpath=/PREFIX/openssl:/usr/lib -I/PREFIX/openssl/include/openssl"

./configure --prefix=/PREFIX/apache22  --enable-so --enable-ssl=shared -with-ssl=/PREFIX/openssl --enable-module=shared CC=/usr/bin/gcc
make
make install

Приведенная выше команда создает mod_ssl.so в разделе «apache22/modules», но когда я сделал ldd mod_ssl.so, получилось следующее

linux-vdso.so.1 =>  (0x00007fffef8f2000)
libssl.so.1.0.0 => not found
libcrypto.so.1.0.0 => not found
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007ffe6a48d000)
libc.so.6 => /lib64/libc.so.6 (0x00007ffe6a116000)
/lib64/ld-linux-x86-64.so.2 (0x00007ffe6a913000)

libssl.so, libcrypto.so не связаны. Я не знаю, что еще я могу сделать здесь, чтобы связать mod_ssl.so с другой версией openssl.

пожалуйста, помогите мне.


person CharlieSiNB    schedule 11.10.2016    source источник
comment
Вы пытались установить LDFLAGS=-L/PREFIX/openssl?   -  person alvits    schedule 11.10.2016
comment
Спасибо за ваш быстрый ответ. Да. Я попытался. это не сработало.   -  person CharlieSiNB    schedule 11.10.2016
comment
Сообщите компоновщику, что у вас есть предпочтительный путь. Попробуйте export CPPFLAGS="-Wl,-rpath=/PREFIX/openssl:/usr/lib -I/PREFIX/include/openssl".   -  person alvits    schedule 12.10.2016
comment
Alvits, Большое спасибо за ответ. Я попробую и дам вам знать.   -  person CharlieSiNB    schedule 12.10.2016
comment
У меня была опечатка. Должно быть CFLAGS, а не CPPFLAGS.   -  person alvits    schedule 12.10.2016
comment
Не знаю, насколько я ценю твою помощь здесь, Алвитс. но могу ли я спросить еще один здесь. Похоже, что apache не создает mod_ssl.so в каталоге модуля, а создает mod_ssl.c, о чем свидетельствует httpd -l. но мне нравится иметь mod_ssl.so в каталоге модулей. могу ли я это сделать?   -  person CharlieSiNB    schedule 12.10.2016
comment
Я думаю, вам нужно изменить --enable-ssl=ssl на --enable-ssl=shared.   -  person alvits    schedule 12.10.2016
comment
Спасибо за помощь, alvits. Мне пришлось перекомпилировать openssl, потому что он не был скомпилирован с общей опцией. и я снова перекомпилирую apache, как показано в дополнительной информации выше под разделительной линией.   -  person CharlieSiNB    schedule 12.10.2016
comment
Когда я добавил несколько строк к исходному вопросу выше, похоже, что mod_ssl.so не связан с opensssl, не так ли? или нет.. я не знаю.. я так благодарен за вашу помощь.. я чувствую себя таким беспомощным здесь.   -  person CharlieSiNB    schedule 12.10.2016
comment
Это связано. Но ваш путь выполнения указывает на неправильный каталог, поэтому он не может их найти. Отрегулируйте -Wl,-rpath соответственно там, где находятся libssl.so и libcrypto.so. Я бы предложил создать файл /etc/ld.so.conf.d/*.conf для вашего нового местоположения библиотеки, но это может конфликтовать с вашими существующими libcrypto и libssl. Так что настройка -Wl,-rpath должна сделать это.   -  person alvits    schedule 12.10.2016
comment
Из вашего обновленного сообщения кажется, что ваши библиотеки расположены в /PREFIX/openssl/lib. Используйте export CFLAGS="-Wl,-rpath=/PREFIX/openssl/lib:/usr/lib -I/PREFIX/openssl/include/openssl".   -  person alvits    schedule 12.10.2016
comment
Алвиц, не знаю, как выразить Вам свою благодарность. да. ты прав. но я также изменил свой LD_LIBRARY_PATH=/PREFIX/openssl/lib. Это сработало .!!!!!!!!!!!!!!!!!! Спасибо большое!!!!!!!!   -  person CharlieSiNB    schedule 12.10.2016


Ответы (2)


Благодаря помощи Алвитса я впервые смог написать этот ответ в stackoverflow.

<сильный>!! Слава Алвитсу!!

Моя первоначальная задача заключалась в том, что мне нужно установить другую версию openssl в локальном каталоге, который отличается от системного openssl. Но мне нравится делать mod_ssl, который связан с более новым openssl.

Во-первых, я установил openssl с общей опцией, о которой я изначально забыл, а mod_ssl не был создан. так что будьте осторожны, не забывайте об этом.

cd openssl_source_direcotry
./config -fPIC shared --prefix=/PREFIX/openssl --openssldir=/PREFIX/openssl
make 
make test
make install

Следующим шагом я добавил несколько переменных среды. PREFIX — это мой локальный каталог. При установке используйте другое имя вместо ПРЕФИКС.

export LIBS=-ldl
export LD_LIBRARY_PATH="/PREFIX/openssl/lib"
export LDFLAGS="-L/PREFIX/openssl"
export CPPFLAGS="-I/PREFIX/openssl/include/openssl" 
export CFLAGS="-Wl,-rpath=/PREFIX/openssl/lib:/usr/lib -I/PREFIX/openssl/include/openssl"

Следующим шагом будет перекомпиляция сервера Apache. Я предположил, что сервер Apache уже установлен на вашем сервере.

./configure --prefix=/PREFIX/apache22 --with-apr=/PREFIX/apache22/bin --with-apr-util=/PREFIX/apache22/bin --enable-so --enable-ssl=shared -with-ssl=/PREFIX/openssl --enable-module=shared CC=/usr/bin/gcc
make install

Затем перейдите в apache22/modules, чтобы убедиться, что mod_ssl.so правильно связан.

ldd mod_ssl.so 

        linux-vdso.so.1 =>  (0x00007fff823ff000)
        libssl.so.1.0.0 => /PREFIX/openssl/lib/libssl.so.1.0.0 (0x00007fb3b32d4000)
        libcrypto.so.1.0.0 => /PREFIX/openssl/lib/libcrypto.so.1.0.0 (0x00007fb3b2e8c000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fb3b2c3e000)
        libc.so.6 => /lib64/libc.so.6 (0x00007fb3b28c7000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007fb3b26c2000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fb3b377d000)

Еще один момент, я очень благодарен Альвитсу за его помощь. без его помощи я не смог бы зайти так далеко.

person CharlieSiNB    schedule 12.10.2016
comment
Я пытаюсь перекомпилировать apache с последней версией openssl и застрял на втором шаге, мой apache2 находится в /etc/apache2, но у него нет каталога bin, я выполнил команду sudo find / -name apache2 -type d и проверил результаты команды, и ни один из результатов find не имеет apache2/bin дир, не могли бы вы сообщить мне, где я могу найти фактическое местонахождение apache2/bin? - person RanPaul; 15.02.2018

Это действительно полезно, прежде чем перекомпилировать apache, обязательно очистите apache как «сделать чистым».

Процесс перекомпиляции apache как очистить, настроить, установить.

person Boggavarapu Rajesh    schedule 15.02.2019