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

#apache #autoconf #suse #php-openssl #mod-ssl

#apache #автоконференция #suse #php-openssl #mod-ssl

Вопрос:

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

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

Вот ограничение, которое у меня есть. Я не могу использовать zypper or 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.

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

Комментарии:

1. Вы пробовали настраивать LDFLAGS=-L/PREFIX/openssl ?

2. Спасибо за ваш быстрый ответ. ДА. Я пытался. это не сработало.

3. Сообщите компоновщику, что у вас есть предпочтительный путь. Попробуйте export CPPFLAGS="-Wl,-rpath=/PREFIX/openssl:/usr/lib -I/PREFIX/include/openssl" .

4. Алвиц, большое вам спасибо за ваш ответ. Я попробую и дам вам знать.

5. У меня была ошибка опечатки. Это должно быть CFLAGS , а не CPPFLAGS .

Ответ №1:

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

!Слава Alvits!!

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

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

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

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

 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)
  

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

Комментарии:

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

2. сэкономил много моего времени, спасибо

Ответ №2:

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

Процесс перекомпиляции apache как make clean, configure, make install.

Комментарии:

1. Это решило проблему для меня, я обновился openssl , но каким-то образом httpd все еще использовал старый openssl. Мне не хватало make clean при перекомпиляции apache, как только это было сделано make clean , httpd начал использовать обновленную версию openssl.